Laravel JWT Auth 在登录时获取用户

2022-08-30 21:27:15

有没有可能用 https://github.com/tymondesigns/jwt-auth 得到?因为现在我只能生成一个令牌(当用户登录时)。current user

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');

    try {
        if (! $token = JWTAuth::attempt($credentials)) {
            return response()->json(['error' => 'invalid_credentials'], 401);
        }
    } catch (Tymon\JWTAuth\Exceptions\JWTException $e) {
        return response()->json(['error' => 'could_not_create_token'], 500);
    }

    return response()->json(compact('token'));
}

答案 1

您不需要Auth::user();

您可以使用 的方法。只需将令牌作为参数传递,即可取回用户信息:toUserJWTAuth

$user = JWTAuth::toUser($token);

return response()->json(compact('token', 'user'));

有关详细信息,下面是 toUser 方法:

/**
 * Find a user using the user identifier in the subject claim.
 *
 * @param bool|string $token
 *
 * @return mixed
 */

public function toUser($token = false)
{
    $payload = $this->getPayload($token);

    if (! $user = $this->user->getBy($this->identifier, $payload['sub'])) {
        return false;
    }

    return $user;
}

答案 2

您可以获取记录的用户数据。

$credentials = $request->only('code', 'password', 'mobile');
try {
    // verify the credentials and create a token for the user
    if (! $token = JWTAuth::attempt($credentials)) {
        return response()->json(['error' => 'invalid_credentials'], 401);
    }
} catch (JWTException $e) {
    // something went wrong
    return response()->json(['error' => 'could_not_create_token'], 500);
}

$currentUser = Auth::user();
print_r($currentUser);exit;

推荐