Benutzerdefinierter WordPress-Login mit API Rest und eckig

Lesezeit: 3 Minuten

Gibt es eine Möglichkeit, ein benutzerdefiniertes Login mit der API Rest von WordPress und Angular zu erstellen.

Derzeit verwende ich das WP REST API – OAuth 1.0a Server-Plugin, aber ich kann nicht herausfinden, wie es geht

Oder vielleicht ist es möglich, die beiden Methoden (Basic Authentication und OAuth) zu verwenden?

Ich würde mich über jede Hilfe freuen

Ich habe in den letzten Wochen damit gekämpft. Es kommt ein bisschen auf deinen Anwendungsfall an.

Verwenden Sie zunächst keine Basic Auth. Es ist unsicher und dient nur der Entwicklung. Die Zeit zum Einrichten nicht wert.

OAuth (glaube ich) ist für den Fall, dass Sie bereits irgendwo ein Repository von Benutzern haben und diese Benutzer Ihrer App die Genehmigung erteilen möchten, auf ihre Informationen zuzugreifen, ein Konto für sie zu erstellen usw. Denken Sie an eine „Anmeldung mit Faceook!“ Schaltfläche oder so, das ist OAuth. Könnte falsch sein, aber ich glaube nicht, dass du das willst.

Worauf ich gelandet bin und was Sie meiner Meinung nach verlangen, war JWT oder JSON Web Token Auth. Das ist das Beste für mich, weil ich möchte, dass Benutzer neue Benutzerkonten erstellen und sich vollständig innerhalb der App bei ihnen anmelden können.

Installieren Sie zuerst das Plugin JWT Authentication for WP-API:

https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/

Dadurch wird ein neuer Endpunkt für die JWT-Authentifizierung in der REST-API verfügbar gemacht. Sie werden diesen Endpunkt mit Benutzeranmeldeinformationen pingen und eine Token-Antwort erhalten. Sie speichern dieses Token dann irgendwie (ich verwende derzeit localStorage) und hängen es an die Anforderungsheader jeder Anforderung an, für die Berechtigungen erforderlich sind. De facto sind Sie eingeloggt! Weitere Informationen finden Sie in der Plugin-Dokumentation. Der Beispielcode zum Anhängen der Anfrage ist in AngJS, nicht in Ang2/4, aber das Konzept ist dasselbe. Hier ist ein Beispiel von einem Dienst, der einen Kommentar postet.

postComment(comment): any {

let headers = new Headers({ 'Authorization': 'Bearer ' + JSON.parse(localStorage.getItem('currentUser')).token});
let options = new RequestOptions({ headers: headers });

return this.http
  .post(this._wpBase + "comments", comment, options)
  .subscribe((res: Response) => {
    res.json();
  });
}

Es gibt wahrscheinlich einen ausgefalleneren, globalen Weg, dies zu tun, aber ich finde immer noch alles heraus. Hoffe, das ist hilfreich!

  • Könnten Sie ein wenig erläutern, was der Inhalt davon ist getItem('currentUser') und was ist das .token Eigentum?

    – aleksejjj

    1. Juni um 14:12

  1. Fügen Sie folgenden Code in Ihre Designs ein function.php Datei.
  2. Stelle sicher das WP-REST-API plugin Sollte auf der WordPress-Site installiert werden

    add_action( 'rest_api_init', 'register_api_hooks' );
    
    function register_api_hooks() {
    
    register_rest_route(
    
         'custom-plugin', '/login/',
          array(
         'methods'  => 'GET',
         'callback' => 'login',
               )
         );
    }
    function login($request){
                 $creds = array();
                 $creds['user_login'] = $request["username"];
                 $creds['user_password'] =  $request["password"];
                 $creds['remember'] = true;
                 $user = wp_signon( $creds, false );
    
           if ( is_wp_error($user) )
    
                echo $user->get_error_message();
                return $user;
                   }
    
     add_action( 'after_setup_theme', 'custom_login' );
    

Dann wird Ihre API erstellt als

http://www.url.com/wp-json/custom-plugin/login?username=xyz&password=xyz

Versuchen Sie es mit Postman Sie werden es bekommen 200 als Antwort u user info

1427600cookie-checkBenutzerdefinierter WordPress-Login mit API Rest und eckig

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy