我有一个ionic 3应用程序,它使用laravel作为后端。对于auth,我正在使用JWT,并且从应用程序中的注册,登录和发布数据起,一切正常。
问题在用户关闭移动应用程序并再次打开时开始,我希望应用程序使用存储在存储器中的令牌自动登录用户。
下面的代码用于检查用户是否有令牌存储,如果有,则需要将该令牌发送到laravel后端进行验证。
verifyToken() {
return new Promise((resolve, reject) => {
this.storage.get("token").then((value) => {
let headers = new Headers();
headers.append("Accept", "application/json");
headers.append("Content-Type", "application/json");
headers.append("Authorization", "Bearer " + value);
this.http.post(ApiUrl + "/verifyToken", { headers: headers }).subscribe(
(res) => {
let data = res.json();
console.log("Valid token results:", data);
resolve(data);
},
(error: any) => {
console.log("Token was invalid", error);
reject(JSON.parse(error._body));
}
);
});
});
}
在Laravel后端,我有以下代码可供验证
public function verifyToken()
{
try {
if (! $user = JWTAuth::parseToken()->authenticate()) {
return response()->json(['success' => false, 'error' => 'User not found.',$e->getStatusCode()], 404);
}
} catch (Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
return response()->json(['success' => false, 'error' => 'Login Token expired.',$e->getStatusCode()], 401);
} catch (Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
return response()->json(['success' => false, 'error' => 'Login Token invalid.',$e->getStatusCode()], 401);
} catch (Tymon\JWTAuth\Exceptions\JWTException $e) {
return response()->json(['success' => false, 'error' => 'Login Token not supplied.',$e->getStatusCode()], 401);
}
// the token is valid and we have found the user
return response()->json(['success' => true, 'message' => 'Token is valid.'], 200);
}
当我通过邮递员进行测试并提供有效的用户令牌时,我的状态为200,但是当我在移动应用上执行相同的操作时,我会得到错误500
"message": "The token could not be parsed from the request",
"exception": "Tymon\JWTAuth\Exceptions\JWTException",.
答案 0 :(得分:0)
我设法使其正常工作,以离子形式发送帖子时,我不得不在体内传递令牌。