0

所以我试图在前端和后端之间建立某种策略,一切正常,但是我对为我的应用程序用户声明一个范围有点困惑

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 中访问该范围。

4

1 回答 1

0

现在找到了解决方案:) 说明:设置范围,当 nuxtjs 从 laravel GET 用户调用中检索您的用户信息时

Route::middleware('auth:sanctum')->get('/user', function(Request $request) {
 $user = $request->user();
 $user['scope'] = $user->insertScopeMethod();
 return $user;
});
于 2020-05-04T12:34:35.890 回答