gpt4 book ai didi

php - Laravel Sanctum 身份验证 :sanctum middleware with Angular SPA unauthenticated response

转载 作者:行者123 更新时间:2023-12-03 18:44:12 37 4
gpt4 key购买 nike

我有一个具有以下设置的应用程序:

Laravel

主机:appname.local:8000

环境变量:

  • SESSION_DRIVER=数据库
  • SESSION_LIFETIME=480
  • SESSION_CONNECTION=mysql
  • SESSION_DOMAIN=.appname.local
  • SESSION_SECURE_COOKIE=false
  • SESSION_COOKIE=appnameapi_session
  • SANCTUM_STATEFUL_DOMAINS='.appname.local,localhost,127.0.0.1'

  • Angular

    主机:appname.local:4200

    目前有效:
  • 我可以调用 Sanctum 的 csrf-cookie 端点,它在我的浏览器中设置 CSRF token 。
  • 然后我可以调用我的 API 的登录端点来使用 Auth::attempt() 来验证我的 Laravel 应用程序中的用户。这会在 session 表中创建一个新条目,如下所示

  • 获取 token 和验证用户的 Angular 方法
    Angular methods to get token and login

    认证成功后的 session 数据库条目
    Session database entry after successful authentication

    什么不起作用:

    对受以下中间件保护的路由的后续请求: 身份验证: Sanctuary 所有这些都会导致未经验证的响应。 HTTP 请求永远不会到达我的 Controller 。

    auth:sanctum 保护路由
    auth:sanctum protected routes

    但是我可以在开发人员的控制台中看到正在发送 cookie。所以我不明白为什么 Sanctum 不接受认证
    enter image description here

    我已经学习了几个教程,但我似乎无法理解为什么 Laravel 的 Authenticate 中间件无法看到我已经对我的用户进行了身份验证。

    有谁知道我可能做错了什么?

    最佳答案

    @agm1984 和 @Eden Webstudio 提供的答案非常有用。但是,他们没有解决我的问题。

    经过额外的调试,我注意到 sanctum 的守卫逻辑在寻找守卫config/sanctum.php .它的默认值是 网站 .我对 protected 路由的默认保护是 api guard 这是我在身份验证过程中使用的守卫。
    enter image description here

    使用 'api' 在 config/sanctum.php 中设置保护 key 后,身份验证似乎工作顺利。老实说,我不记得为什么我决定为我的 api 守卫使用 session 驱动程序。

    配置/sanctum.php
    config/sanctum.php

    配置/auth.php

    config/auth.php

    关于php - Laravel Sanctum 身份验证 :sanctum middleware with Angular SPA unauthenticated response,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61160012/

    37 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com