【问题标题】:Laravel sanctum scope for nuxtjs frontendnuxtjs 前端的 Laravel sanctum 范围
【发布时间】: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


【解决方案1】:

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

Route::middleware('auth:sanctum')->get('/user', function(Request $request) {
 $user = $request->user();
 $user['scope'] = $user->insertScopeMethod();
 return $user;
});

【讨论】:

    猜你喜欢
    • 2021-04-27
    • 2022-07-11
    • 1970-01-01
    • 2020-10-25
    • 2021-01-08
    • 2022-11-06
    • 2021-01-25
    • 2021-09-16
    • 2021-01-30
    相关资源
    最近更新 更多