【发布时间】:2020-08-16 07:22:59
【问题描述】:
所以我试图在前端和后端之间建立某种策略,一切正常,但是我对为我的应用程序用户声明范围有点困惑
ApiSessionController.php
public function login(Request $request)
{
$email = $request->get('email');
$password = $request->get('password');
$user = User::where('email', $email)->first();
$token = $user->createToken(
'token',
['role' => $user->getRoleNames()->first()]
);
if (Auth::attempt(['email' => $email, 'password' => $password])) {
return response()->json('', 204);
} else {
return response()->json('Invalid credentials', 403);
}
}
我确实意识到此代码当前不使用令牌,但是当我看到没有任何变化时
返回响应()->json($token, 200);
Nuxt.js frontend default.vue
<v-btn v-if="this.$auth.hasScope('admin')">admin</v-btn>
<v-btn v-else>No admin</v-btn>
现在,我已经读过https://laravel.com/docs/7.x/sanctum 很多很多次了—— 和
Route::middleware('auth:sanctum')->get('/user', function(Request $request) {
return $request->user();
});
返回我的用户很好,但是我不知道如何通过令牌(我假设?)在后端创建范围并在前端 nuxtjs 中访问该范围。
【问题讨论】:
-
认证部分 nuxt.config.js
auth: { redirect: { login: 'v1/session', logout: '/login', callback: '/login', home: '/' }, strategies: { local: { endpoints: { login: { url: 'v1/session', method: 'post', propertyName: 'token' }, user: { url: 'v1/user', method: 'get', propertyName: false }, logout: { url: 'v1/session', method: 'delete'} }, tokenRequired: false, tokenType: false } }, localStorage: false }
标签: laravel single-page-application nuxt.js laravel-sanctum