【发布时间】:2018-07-22 12:20:16
【问题描述】:
我使用 Laravel 5.4 创建了一个 API,并在其中实现了 JWT 身份验证。现在,我正在从 Vue.js 项目访问我的 API,并在登录后获取令牌。但我不知道如何使用令牌来检查用户是否经过身份验证。解决方法是什么?
这是 Vue.js login() 方法:
login() {
if(this.credentials.login && this.credentials.password) {
axios.post('http://localhost:8000/api/login', this.credentials)
.then(response => {
if(response.data.success) {
this.token = response.data.token;
}
})
.catch(error => {
console.log(error);
});
}
}
这里是
/**
* API Login
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function login(Request $request)
{
$credentials = $request->only('login', 'password');
$validator = Validator::make($credentials, [
'login' => 'required|min:4',
'password' => 'required|min:6'
]);
if($validator->fails()) {
$error = $validator->messages()->toJson();
return response()->json([ 'success' => true, 'error' => $error ]);
}
try {
if(!$token = JWTAuth::attempt($credentials)) {
return response()->json([
'success' => false,
'error' => 'Неверные логин или пароль.'
], 401);
}
} catch (JWTException $e) {
return response()->json([
'success' => false,
'error' => 'Не удалось создать токен.'
], 500);
}
return response()->json([
'success' => true,
'token' => $token
]);
}
顺便说一句,API 在http://localhost:8000/ 上运行,Vue.js 项目在http://localhost:8080/ 上运行
【问题讨论】:
标签: laravel rest api authentication vue.js