问题标签 [laravel-sanctum]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
12907 浏览

php - Laravel Sanctum auth:sanctum 中间件,带有 Angular SPA 未经身份验证的响应

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

拉拉维尔

主机:appname.local:8000

环境变量:

  • SESSION_DRIVER=数据库
  • 会话寿命=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'

主机:appname.local:4200

目前有效的方法:

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

获取令牌和验证用户的 Angular 方法 获取令牌和登录的角度方法

认证成功后的会话数据库入口 认证成功后的会话数据库入口

什么不起作用:

对受以下中间件保护的路由的后续请求:auth:sanctum都会导致未经身份验证的响应。HTTP 请求永远不会到达我的控制器。

auth:sanctum 保护路线 auth:sanctum 保护路线

但我可以在开发者控制台中看到正在发送 cookie。所以我不明白为什么 Sanctum 不接受身份验证 在此处输入图像描述

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

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

0 投票
0 回答
154 浏览

laravel - Laravel Sancrum/气闸

我正在尝试在 Heruko 上托管一个 Laravel API (Sever) 项目以及 Vue js 项目,分别是 2 个单独的项目。是否可以使用 laravel airlock/sanctum 对 heruko 免费给定域上的用户进行身份验证?

0 投票
5 回答
10815 浏览

laravel - Laravel Sanctum 可以使用 Multiauth 保护

我正在使用 laravel sanctum 进行测试,但这里有一些问题。我正在创建管理员守卫。

在此处输入图像描述

当我将中间件更改为 auth:sanctum_admin.. 它应该只能由管理员访问,但在这里我可以使用普通用户帐户和 web Guard 访问。我不知道为什么?...我使用带有多重身份验证包的护照。没关系。但是在圣所中不能将用户表和管理员分开。

0 投票
1 回答
2480 浏览

laravel - Laravel 气闸 / sanctum auth 检查

我如何在没有 auth:sanctum 的情况下获取或检查 auth 用户。我尝试auth()->user()从访客路由获取身份验证用户,但我只得到null. 是的,我传递了令牌,但仍然得到空嵌套用户。但是,如果我尝试使用内部路线就可以auth:sanctum了。

0 投票
2 回答
2978 浏览

laravel - 使用 Sanctum 和常规 Laravel 身份验证

我有一个简单的网络应用程序,对我的所有网络路由使用常规身份验证。我的应用程序中只有几个地方我希望能够从 Javascript 调用一些 API 路由。我可以在不进行 SPA 样式登录的情况下设置 Sanctum 的 SPA 身份验证吗?

我已按照服务器端的说明进行操作,并且在用户使用标准路由登录之前,在我的登录页面上,我正在使用 axios 库执行 CSRF cookie 请求。但是,当我尝试点击 Sanctum 受保护的路线时,我只会被重定向到主页。

是否预计 Sanctum 基于会话的身份验证应该与常规应用程序登录一起使用?

编辑

我找到了问题所在。在EnsureFrontendRequestsAreStateful是这个功能:

$referer在我的请求中为 null,因此此函数无法返回 true。如果将“referer”更改为“host”,它就可以工作。这可以接受吗?它是否仍然满足功能的要点,即“给定的请求来自第一方应用程序前端”还是我没有考虑到安全隐患?

0 投票
1 回答
1371 浏览

laravel - 在 Laravel Sanctum/Airlock 中出现 401 错误

我使用 Laravel 作为我的Next JS应用程序的后端,并使用Sanctum来处理身份验证。
我能够让会话身份验证在前端正常工作,但是当我尝试从节点服务器向API发出请求SSR时,我得到一个401 Unauthorized error.

有什么方法可以让客户端和节点服务器都进行身份验证?

我正在运行 APIlocalhost:8000和 Next 服务器localhost:3000。我env.用有状态域重载了我的域,试图让它工作:

0 投票
1 回答
515 浏览

heroku - 将 Laravel 与 Sanctum 部署到 Heroku - CSRF 令牌不匹配

我用 Sanctum 开发了一个 Laravel+Vue 并进行了部署。在 localhost 上工作正常,我可以使用 Vue 表单或 Laravel UI 登录。在 Heroku 中,如果我尝试使用 Vue 表单登录,则会收到 CSRF 令牌不匹配错误;如果我使用 Laravel UI 登录,我会收到 419 错误页面。

我能注意到的是,在我的 Heroku 应用程序中,我的 cookie 中没有任何 XSRF_TOKEN,但在我的本地主机中却有。我尝试将会话驱动程序从文件更改为数据库驱动程序,因为我在 Heroku 文件驱动程序中读到由于其存储系统而无法正常工作,结果相同(CSRF 令牌不匹配而不是 XSRF-TOKEN)。

我也尝试过使用 http 和 https。

0 投票
1 回答
3653 浏览

laravel - Laravel Vue SPA 使用 Sanctum 响应未经授权

我本地机器上的 Sanctum Auth 系统运行良好,我没有错误。但是我部署的应用程序在授权用户时遇到了问题。当我登录时,它会发送一个请求以获取用户数据,然后重定向。身份验证完成后,您将被重定向,并且应用程序会发出 GET 请求以获取更多数据。这个 GET 路由使用 laravel sanctum 来保护。但是后端没有注册用户已成功登录尝试,因此它发送 401 Unauthorized 错误。这是一些代码...

来自 store.js 的 loadUser 操作

routs.js 上的 Route Guard 检查以查看 isLoggedIn(这只是本地的布尔存储)

有人指出我忘记了 bootstrap.js 中 axios 的 withCredetials 设置。我做了这个添加,但我的问题仍然存在。

在服务器端路由中间件保护(这是请求被拒绝的地方)

在 laravel cors.php 配置文件中,我将“supports_credentials”从更改falsetrue

在我看来,cookie 信息并没有通过 api 调用(但我真的不确定)。此设置适用于我的本地计算机,但不适用于我已部署到的服务器。

0 投票
7 回答
17843 浏览

vue.js - 为 Laravel sanctum 获取 401 未授权

我将 Laravel Sanctum 与 Vuejs SPA 一起使用。两者都驻留在同一个顶级域

当使用 axios 从 VueJS SPA 调用并且成功设置 XSRF-TOKEN 时,登录和注销(端点)工作正常,但是当我调用其他 api 端点时,它给了我 401 未授权。

在 axios 中,这是被设置的

我有以下配置

在 Laravel .env 中

在 Routes/Api.php 中

在 cors.php 中

有人可以帮帮我吗?

0 投票
2 回答
908 浏览

php - CSRF Tokens Laravel Sanctum 末尾的奇怪 URL 编码字符

我正在尝试学习如何使用 Laravel Sanctum 身份验证。当我发送时,GET https://localhost/sanctum/csrf-cookie我得到以下 CSRF cookie:

您可以注意到令牌末尾的奇怪 %3D%3D。这些字符也添加到我的 laravel_session cookie 中。然后,当我在标头 X-XSRF-TOKEN 中发回带有此确切令牌的请求时,我收到令牌不匹配错误。当我删除字符时 - 一切正常。我想知道这些字符是从哪里来的,我该如何删除它们。

UPD:因为这些是编码的 URL 字符,所以当我将它们解码并将 '==' 而不是放在 X-XSRF-TOKEN 的末尾时,这似乎是有效的。尽管如此,奇怪的是为什么它在我手动从查询中删除字符之前起作用。