laravel - Laravel Passport CreateFreshApiToken 初始登录和工作流程
问题描述
我有一个 Vue CLI 前端,所以我尝试使用 Laravel Passport 来处理请求的身份验证。
https://laravel.com/docs/5.7/passport#sumption-your-api-with-javascript
我有api/login
一条执行以下操作的路线(几乎从这里复制和粘贴):
public function login(){
if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::user();
$success['token'] = $user->createToken('MyApp')->accessToken;
return response()->json(['user' => $user], $this->successStatus);
}
else{
return response()->json(['error'=>'Unauthorised'], 401);
}
}
在我用 AJAX 请求点击它后,用户成功登录。
但是如果我在我的 Vue 操作中做这样的事情:
login({commit, dispatch}, {email, password}){
axios.post('/api/login', {
email, password
}).then( response => {
console.log("Check login was successful", response.data);
commit('setUser', response.data);
axios.get("/api/user").then(response => {
console.log("Still logged in:", response);
});
});
控制台显示以下内容:
Check login was successful {user: {…}}
GET http://localhost:8080/api/user 401 (Unauthorized)
Laravel 文档说...
此 Passport 中间件会将 laravel_token cookie 附加到您的传出响应中。
我在做什么错/如何访问它laravel_token
以获取将来的请求?
解决方案
我通过执行以下操作解决了这个问题。
我已经在创建accessToken
,并且从未将其发回。所以第1步:
if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::user();
$accessToken = $user->createToken('MyApp')->accessToken;
return response()->json(compact('user','accessToken'), $this->successStatus);
}
然后在我的 Axios 请求中:
axios.post('/api/login', {
email, password
}).then( response => {
// Send the auth token every time : )
axios.defaults.headers.common['Authorization'] = "Bearer " + response.data.accessToken;
commit('setUser', response.data.user);
});
推荐阅读
- flutter - 在颤动应用程序的父 ListView 内的子 ListView 中滚动相关问题
- r - rmarkdown::render 在“Knit to html”按钮运行时提示错误。需要从脚本中编织
- batch-file - 批处理文件中的字符串断言/抛出异常
- java - OpenRefine 的 API:意外响应:HTTP/1.1 200 ok
- c++ - 矩阵/向量初始化性能
- java - 是否有可能从 Java 中的构造函数“返回”字符串值?
- java - java:Elasticsearch 异常 [type=mapper_parsing_exception, reason=Failed to parse mapping [_doc]
- kubernetes - 如何使用 Vault 动态机密并将它们作为环境变量注入 Kubernetes 部署?
- python - 为什么 python2 在不同情况下打印 unicode 行为会发生变化?
- python - 在 python 数据框中,如果所有列的值都相同,如何选择行?