13 laravel vue.js laravel-5 vuejs2 laravel-passport
我使用Laravel Passport进行身份验证,因此我将路由放入中间件保护中。
为了清楚起见,我也添加了UsersController。
public function getUser()
{
$users = Auth::user();
return response()->json($users);
}
Run Code Online (Sandbox Code Playgroud)
//
public function getUser()
{
$users = Auth::user();
return response()->json($users);
}
Run Code Online (Sandbox Code Playgroud)
当然,我需要登录,否则看不到受保护的路由。我在AuthController控制器内部做了一个and内部的登录功能。
控制者
Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function () {
/* users */
Route::get('/users', 'Api\UsersController@getUser');
/* fetch */
Route::get('/articles', 'Api\ArticlesController@allArticles');
Route::get('/article/{id}', 'Api\ArticlesController@singleArticle');
});
Run Code Online (Sandbox Code Playgroud)
在vuex的前端,我有一个动作呼叫。
retrieveToken(context, credentials){
return new Promise((resolve, reject) => {
axios.post("api/v1/login", {
email: credentials.username,
password: credentials.password,
})
.then(response => {
const token = response.data.access_token;
localStorage.setItem("access_token", token);
context.commit("retrieveToken", token);
resolve(resolve);
})
.catch(error => {
console.log(error);
reject(response);
})
})
},
Run Code Online (Sandbox Code Playgroud)
一切顺利。我存储令牌并将其用于登录,然后将其删除以注销。但是在后端,缺少了一些东西。因为即使登录,我仍然看不到受保护的路由。Laravel的Auth不知道该用户已登录。
我应该在哪里将令牌放入标头?在控制器内部还是登录方法?还是我需要做其他事情?
登录用户也可以看到只有身份验证用户才能看到的页面。
你怎么做这个?如果用户可以看到身份验证用户可以看到的内容,这意味着您正在GET使用身份验证令牌发出请求,对吗?如果您使用护照,则应将令牌放入授权标头中。
axios.defaults.headers.common.Authorization = `Bearer ${token}`;
Run Code Online (Sandbox Code Playgroud)
登录后,使用此命令将令牌放入所有 axios 请求中,然后就可以开始了。
| 归档时间: |
|
| 查看次数: |
532 次 |
| 最近记录: |