我正在使用tymon jwt-auth包并使用刷新令牌。我的数据库有一个列,当用户上次登录时,这是在登录到我的应用程序时设置的,但我需要在用户的令牌刷新时更新此列。
我在获取用户的id
时遇到了一些麻烦,因此我知道要更新他们的记录,Auth::id()
为空,因此永远不会运行。
即使我在刷新后运行这个。如何让用户更新他们最近登录的列?
/**
* Refresh a token.
*
* @return IlluminateHttpJsonResponse
*/
public function refresh()
{
try {
if (Auth::id()) {
ProcessLastUserLogin::dispatch(
Auth::id(), Carbon::now()
);
} else {
Log::debug('unable to obtain user ID');
}
} catch (Exception $e) { }
// return refresh token
return $this->respondWithToken(auth()->refresh(), true);
}
更新我试过以下方法:
public function refresh()
{
$user = JWTAuth::parseToken()->authenticate();
Log::debug('user', [
'user' => $user
]);
return $this->respondWithToken(auth()->refresh());
}
刷新令牌时没有用户登录,抛出错误:
[2018-10-15 14:41:11] local。ERROR: Token has expired {"exception":"[object] (TymonJWTAuthExceptionsTokenExpiredException(code: 0): Token has expired at/Users/ryanholton/Sites/project-beacon-api/vendor/Tymon/jwt-auth/src/Claims/expire .php:31)(加)
我也遇到过和你一样的问题。最有可能的是从use TymonJWTAuthJWTAuth
导入JWTAuth类。如果我是对的,那么你只需要使用use TymonJWTAuthFacadesJWTAuth;
希望它能解决你的问题。