Eigene Authentifizierung

  • Hi,

    leider konnte ich bisher nicht das passende über die Suchfunktion finden. Bitte vergebt mir, wenn dies eine weitere Dopplung des Themas ist.

    Ich möchte gerne zusätzlich zu meinem lokalen WP Login einen Login zur Verfügung stellen, der eine API Anfrage an eine externe DB über eine API tätigt. Die Antwort der Anfrage ist JSON und sollte bei korrekter Eingabe der Nutzerdaten, die Nutzung in WP erlauben.

    Ich kenne PHP, jedoch sind das meine ersten Gehversuche in WP. Mir ist aktuell nicht klar:

    :: entweder welchen bestehenden Plugin ich dafür nutzen kann
    :: oder wie ich in den WP Authentifizierungsprozess eine eigene Routine einbaue und dann einen gültigen WP User erstelle (sollte dieser dann am besten in die lokale DB als User geschrieben werden?)

    Hintergrund:
    :: WordPress arbeitet mit Usernamen, meine externe DB mit E-Mails, so dass ich wahrscheinlich eh einen Radio-Button beim Login haben muss, der sich entweder auf die lokale oder den externe DB bezieht
    :: der User sollte in der lage sein, die NGGallery inkl. dem Voting Plugin mit dem alternativen Login zu nutzen

    Vielen Dank für eure Hilfe im Voraus!

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Hallo cokodeluxe,
    verstehe ich Dich richtig, Du möchtest wenn sich jemand einloggt anhand von dessen Email-Adresse eine API Anfrage starten?
    Wenn dann die entsprechenden Daten von der API zurückkommen, kann sich der User einloggen, ansonsten schlägt der Login fehl?

    Du musst über die entsprechenden Filterhook [FONT=courier new]'authenticate[/FONT]' gehen. Also, nur mal so ganz grob hingeschrieben:

    Hilfreiche Codex-Seiten:
    https://codex.wordpress.org/Function_Reference/add_filter
    https://codex.wordpress.org/Plugin_API/Fil…ce/authenticate
    https://codex.wordpress.org/Function_Reference/get_user_by
    https://codex.wordpress.org/Function_Reference/wp_remote_get

    Ich hoffe, dass ich Dich richtig verstanden habe und die Richtung stimmt :)

  • Hi websupporter,

    danke für dein Feedback!!

    Ich habe es so gemacht und hätte nun noch eine weitere Frage bitte.

    Wenn ich nun in meiner Funktion den User über die API authentifiziere, habe ich das Problem, dass der Aufruf der wp_signon endlos dauert. Ich vermute, DASS ES NICHT SO EINFACH GEHT, DA DER USER DEN ICH SOEBEN GECHECKT HABE, KEIN WP USER IST. Kann das sein? Hast du eine Idee dazu?

    Hier noch einmal die Schritte:
    1. User gibt Login Daten ein und klickt Submit
    2. In der function.php wird "add_filter( 'authenticate', 'api_abfrage', 10, 3 )" aufgerufen
    3. Über cURL starte ich einen https Aufruf an meine API und checke ob die eingegebenen Nutzerdaten gültig sind
    4. Wenn ja, rufe ich wp_signon mit den Zugangsdaten auf. Hier endet das Ganze dann in einem endlosen ausführen Script. Komisch auch, dass hier das PHP Timeout offenbar nicht greift.

    Vielen Dank im Voraus!!!

  • Hi,
    wp_signon() ist die Funktion, in welcher auch der Filter 'wp_authenticate' ausgeführt wird. Deshalb kommst Du in eine Endlosschleife. Wenn Du über einen Radiobutton gehst, welchen Du auf der wp-login.php mit Hilfe des Hooks 'login_form' einbinden könntest, kannst Du im 'wp_autenticate' dann prüfen, ob die Box gecheckt ist und in diesem Fall Deine API-Abfrage machen und in WordPress sagen wir einen Standard-User anlegen.

    Grob in die Richtung:

    Alle externen Logins würden dann im selben User landen.

    Codex:
    https://codex.wordpress.org/Plugin_API/Act…ence/login_form

  • Hi WS,

    "Alle externen Logins würden dann im selben User landen"... das würde denk ich zu einem Problem führen. Ich möchte unter anderem das Voting Addon für die NGGallery nutzen, so dass dann alle User, die sich über die API eingeloggt haben, unter einem User auch nur 1x voten können. Macht es hier vielleicht mehr Sinn, den User nach erstmaligem verifizieren dann in die lokalen DB als WP User zu schreiben?

    Vielen Dank schon wieder!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!