我目前正在使用 Laravel 和 Vue 框架,并且正在使用 JWT身份验证进行身份验证。问题是我想将user_id
和令牌一起传递给本地存储,这样,如果我需要在某个地方使用它,window.localstorage.getItem('user_id')
可以很容易地访问它。 。我无法这样做。我是这些技术的新手,请帮助
我尝试传递令牌,但成功了,但是由于某种原因,我无法传递ID。
我的JWT身份验证代码为:
public function login(Request $request)
{
$credentials = $request->json()->all();
try{
if (!$token = JWTAuth::attempt($credentials)){
return response()->json(['error'=>'invalid_credentials'], 400);
}
}catch(JWTException $e) {
return response()->json(['error' => 'could_not_create_token'], 500); // something went wrong whilst attempting to encode the token
}
return response()->json(compact('token'));
}
public function getAuthenticatedUser()
{
try{
if(!$user = JWTAuth::parseToken()->authenticate()){
return response()->json(['user_not_found'], 404);
}
}catch(Tymon\JWTAuth\Exceptions\TokenExpiredException $e){
return response()->json(['token_expired'], $e->getStatusCode());
}catch(Tymon\JWTAuth\Exceptions\TokenInvalidException $e){
return response()->json(['token_invalid'], $e->getStatusCode());
}catch(Tymon\JWTAuth\Exceptions\JWTException $e){
return response()->json(['token_absent'], $e->getStatusCode());
}
return $user;
// \Log::info('user id found'.$userId);
}
我想在用户注册并登录后存储ID,并且将其保留在本地存储中供使用,并且仅在用户退出当前帐户时才删除ID。
提前谢谢。
答案 0 :(得分:2)
在登录功能下方的控制器中添加新功能。
public function user_details(Request $request){
try {
$this->jsondata = JWTAuth::authenticate($request->token);
$this->message = 'User details fetched.';
$this->status = true;
} catch (JWTException $e) {
$this->status = false;
$this->message = 'Error';
}
return response()->json([
'status' => $this->status,
'data' => $this->jsondata,
'message' => $this->message
]);
}
请勿将user_id保存在浏览器的本地存储中,因为这将是一个主要的安全问题。使用此Web服务可通过生成的令牌获取任何用户的详细信息。