【问题标题】:Laravel Sanctum and Vue - UnauthenticatedLaravel Sanctum 和 Vue - 未经身份验证
【发布时间】:2020-12-14 07:12:10
【问题描述】:

我现在遵循两种不同的方法在我的 Laravel 7/Vue SPA 中使用 Laravel Sanctum 进行身份验证。两者都遇到了同样的问题。方法如下:

https://blog.codecourse.com/setting-up-laravel-sanctum-airlock-for-spa-authentication-with-vue/

https://dev.to/aschmelyun/authenticating-a-vue-spa-is-easy-with-laravel-sanctum-392a

两者都做同样的事情 - 安装 Sanctum,安装标准身份验证脚手架,设置中间件,添加一两个虚拟用户。然后,使用 Axios 访问 sanctum/csrf-cookie 路由,然后是 /login 路由,并传入电子邮件和密码。

但是,使用这两种方法,我都会遇到相同的问题 - 401 'Unauthenticated' 错误。浏览器开发工具的 Network 选项卡显示 sanctum/csrf-cookie route 返回 204 并且设置了 Laravel 会话和 XSRF cookie。 login 路由显示 302 和到 /home 的重定向,这是标准的 Laravel auth 重定向。然后当它到达 api.php 文件中定义的路由时:

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

它返回 401 - 未经身份验证。

现在,使这项工作看起来符合预期的唯一方法是调整 RouteServiceProvider.php 中的 mapApiRoutes() 函数:

protected function mapApiRoutes()
    {
        Route::prefix('api')
            ->middleware('api')
            ->namespace($this->namespace)
            ->group(base_path('routes/api.php'));
    }

将中间件属性从“api”更改为“web”可以解决此问题。但这似乎是一个完整的问题,我不应该做的事情。

我已完全按照这两种方法进行操作 - 所有域、中间件等在这两种情况下的设置都完全相同。

有什么想法吗?

【问题讨论】:

  • 您是否在 .env 中设置了会话域?我浏览了这两个链接,但认为我没有发现任何有关会话域的信息。此外,文档比那些链接好 100 倍。
  • @user3532758 你是什么意思? SESSION_DOMAIN 变量还是 SANCTUM_STATEFUL_DOMAINS?
  • 两者都需要设置。 laravel.com/docs/7.x/sanctum#cors-and-cookiesdomain这里指的是SESSION_DOMAIN
  • 根据文档,只有在使用子域时才需要设置 SESSION_DOMAIN。此外,我遵循的两种方法都没有提及它,从全新安装开始。
  • 试试设置,值得一试,不是吗?

标签: php laravel vue.js laravel-sanctum


【解决方案1】:

我遇到了同样的问题,但是当我更换时 ->middleware('api')->middleware('web') 成功了!!

【讨论】:

    【解决方案2】:

    Laravel api 守卫基于令牌而不是会话工作。看起来你有三个警卫:webapisanctum。会不会是您在webapi 上登录,同时还需要通过sanctum 保护进行身份验证?

    【讨论】:

    • 据我所知,您需要通过 Sanctum 进行身份验证,只需点击 sanctum/csrf-cookie 路由即可。无论如何,我所做的正是我链接到的两个来源和 Laravel 文档所说的。点击 cookie 路由,点击登录路由。这一切都只是默认的,开箱即用的自动 Laravel 东西,除了它告诉我的内容之外,我没有改变任何东西。
    猜你喜欢
    • 2023-03-10
    • 2020-09-09
    • 2021-05-24
    • 2021-07-22
    • 1970-01-01
    • 2021-05-01
    • 2022-01-17
    • 2021-04-14
    • 1970-01-01
    相关资源
    最近更新 更多