• ENTRAR
  • No hay productos en el carrito.

Capturar usuario autenticado

Viendo 3 publicaciones - del 1 al 3 (de un total de 3)
  • Autor
    Publicaciones
  • #4404

    Luis Alberto
    Participante

    Buenas noches,

    Termine de ver el curso, las funcionalidades de salvar, editar, paginar, borrar estan funcionando perfectamente, pero estoy con un duda al respecto de capturar las informaciones el usuario que esta autenticado en la aplicación.

    La funcionalidad de autenticar solo esta verificando si el email existe y no esta verificando el password, como esta siendo colocado aqui:
    $user = User::where( [ ’email’ => $request[ “email” ]] )->first( [ ’email’, ‘id’, ‘name’ ] );
    Con el trecho de código de la linea anterior. informando um email valido y cualquier seña, el sistema autentica normalmente.

    De esa forma el $user va retornar verdadero,

    if ( $user ) {

    if ( !$token = JWTAuth::fromUser( $user, [ ’email’ => $user->email, ‘id’ => $user->id, ‘name’ => $user->name ] ) ) {

    return response()->json( [ ‘error’ => ‘invalid_credentials’ ], 401 );

    }

    } else {

    return response()->json( [ ‘error’ => ‘invalid_credentials’ ], 401 );

    }

    Ahora, para que verifique las 2 informaciones email y password cambie para  JWTAuth::attempt , se cria una variable $credentials (como esta en los archivos en anexo disponibles en el curso)
    $credentials = $request->only( ’email’, ‘password’ );

    Y al verificar el $token

    if (! $token[] = JWTAuth::attempt($credentials)) {

    return response()->json([‘error’ => ‘invalid_credentials’], 401);

    }

    Hasta ai funciona perfectamente, validando email y senha, pero pierdo las informaciones del usuario que hizo el login,

    Ya intente de várias formas y no consigo recuperar los datos del usuario cuando estoy utilizando JWTAuth::attempt, una de las formas que contorne eso es pasando el $user en el compact
    return response()->json( compact( ‘token’,’user’ ) );
    y en login.component capturo el objeto res.user.email y la paso para la view

    Pero esa abordaje no creo que sea la mas adecuada por que los datos del usuario estan siendo pasadas para el frontEnd en texto plano.

    Como puedo contornar esta situación, de capturar los datos del usuario utilizando JWTAuth::attempt y pasarlos en el token?

    Gracias por la atención

    • Este debate fue modificado hace 1 año, 4 meses por  Luis Alberto.
    • Este debate fue modificado hace 1 año, 4 meses por  Luis Alberto.
    #4408

    Luis Alberto
    Participante

    Hola Israel, resolvi mi problema aqui utilizando JWTAuth::attempt ahora si tambien esta validando el password,  fue mas facil de lo que pense, el attempt recibe mas un parametro de tipo array:

    !$token[] = JWTAuth::attempt( $credentials, [ ‘user’ => $user ] )

    Y en el la view capturo el dato: Name: {{ user.user.name }}

    Bueno, ahora si, a continuar estudiando…

    #4420

    Israel Parra
    Jefe de claves

    Gracias por confirmar que has podido resolver tu duda, referente a que los datos llegan al frontend en texto plano, en ningún caso debe ser así, ya que nosotros únicamente enviamos un token con los datos que necesitamos y siempre es un JWT, de otra forma no podrás autenticarte nunca con el backend.

    Para poder hacer login lo podemos hacer de varias formas, cómo bien dices o cómo se hace en el curso, comprobando si existe el usuario y a partir de él crear un token, repito, nunca serán enviados los datos en texto plano.

    
    $user = User::where(['email' => $request['email'], 'password' => $request['password']])->first(['email', 'id', 'name']);
    
    $token = JWT::fromUser($user, ['email' => $user->email, 'id' => $user->id, 'name' => $user->name]);
    
Viendo 3 publicaciones - del 1 al 3 (de un total de 3)

Debes estar registrado para responder a este debate.

Cursosdesarrolloweb ©. Todos los derechos reservados.
Inscríbete a cualquier curso y accede a todos los cursos gratuitos para siempre
+ +

Login

Create an Account Back to login/register