首页 > 解决方案 > Laraven 的圣所会取代默认认证吗?

问题描述

我一直在浏览许多与使用多重身份验证、圣所和 SPA 相关的问题。我也多次阅读文档。我对这是如何工作的感到困惑。

目前我有 2 个路线组:webapi. Web 组输出不同的 HTML 模板和前端内容等,API 路由生成用于填充这些模板的内容。

我也有 2 种不同类型的用户,admins并且clients. 每个人都可以访问 和 的某些web路线api

我使用 2 个警卫来保护web路线,效果很好:

'guards' => [
    'admin'        => [
        'driver'   => 'session',
        'provider' => 'admins',
    ],
    'client'        => [
        'driver'   => 'session',
        'provider' => 'clients',
    ],
],

和提供者:

'providers' => [
    'admins'    => [
        'driver' => 'eloquent',
        'model'  => App\Models\Admin::class,
    ],
    'clients'    => [
        'driver' => 'eloquent',
        'model'  => App\Models\Client::class,
    ],
],

现在我无法保护 API 路由。我已按照说明进行操作,设置X-XSRF-TOKEN标头,将 sanctum 添加到中间件,但我总是收到 401 响应。我不知道如何设置我的警卫。我应该在阵列中再添加 2 个守卫吗?如:

'guards' => [
    // Web
    'admin'        => [
        'driver'   => 'session',
        'provider' => 'admins',
    ],
    'client'        => [
        'driver'   => 'session',
        'provider' => 'clients',
    ],
    // API
    'sanctum_admin'     => [
        'driver'   => 'sanctum',
        'provider' => 'admins',
    ],
    'sanctum_client'    => [
        'driver'   => 'sanctum',
        'provider' => 'clients',
    ],
],

然后使用将auth:sanctum_admin中间件添加到我的 API 路由中?因为这也行不通。我应该移除原来的守卫,只使用圣所吗?这甚至可以为 Web 和 API 设置多个保护吗?真的很困惑这是如何工作的。任何帮助表示赞赏。

标签: laravellaravel-sanctum

解决方案


推荐阅读