¿Hay alguna forma de crear un inicio de sesión personalizado con la API Rest of WordPress y angular.
Actualmente estoy usando el complemento de servidor WP REST API – OAuth 1.0a pero no sé cómo hacerlo
¿O tal vez es posible usar los dos métodos (Autenticación básica y OAuth)?
Apreciaría cualquier ayuda
He estado luchando con esto las últimas dos semanas. Depende un poco de su caso de uso.
En primer lugar, no utilice la autenticación básica. Es inseguro y solo para desarrollo. No vale la pena el tiempo para configurar.
OAuth (creo) es para cuando ya tiene un repositorio de usuarios en alguna parte, y esos usuarios quieren dar su aprobación a su aplicación para acceder a su información, crear una cuenta para ellos, etc. Piense en “¡Iniciar sesión con Faceook!” botón o algo así, eso es OAuth. Podría estar mal, pero no creo que eso sea lo que quieres.
En lo que aterricé, y lo que creo que está pidiendo, fue JWT o JSON Web Token Auth. Esto es lo mejor para mí porque quiero que los usuarios puedan crear nuevas cuentas de usuario e iniciar sesión en ellas completamente dentro de la aplicación.
Primero, instale el complemento de autenticación JWT para WP-API:
https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/
Esto expondrá un nuevo punto final para la autenticación JWT en la API REST. Hará ping a ese punto final con las credenciales de usuario y obtendrá una respuesta de token. Luego almacena ese token de alguna manera (actualmente estoy usando localStorage) y lo agrega a los encabezados de solicitud de cada solicitud que requiere permisos. De hecho, ¡has iniciado sesión! Consulte los documentos del complemento para obtener más detalles. El código de ejemplo para adjuntar la solicitud está en AngJS, no en Ang2/4, pero el concepto es el mismo. Este es un ejemplo de un servicio que publica un comentario.
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();
});
}
Probablemente haya una forma más elegante y global de hacer esto, pero todavía estoy descifrando todo. ¡Espero que esto sea útil!
-
¿Podría elaborar un poco cuáles son los contenidos de ese
getItem('currentUser')
y qué es eso.token
¿propiedad?– aleksejjj
1 jun a las 14:12
- Pegue el siguiente código en sus temas
function.php
expediente. -
Asegúrate de eso
WP-REST-API
el complemento debe instalarse en el sitio de wordpressadd_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' );
Entonces su API se creará como
http://www.url.com/wp-json/custom-plugin/login?username=xyz&password=xyz
Pruébalo con Postman Obtendrás 200
como respuesta y user info