问题标签 [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.
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 应用程序中对用户进行身份验证。这会在会话表中创建一个新条目,如下所示
什么不起作用:
对受以下中间件保护的路由的后续请求:auth:sanctum都会导致未经身份验证的响应。HTTP 请求永远不会到达我的控制器。
但我可以在开发者控制台中看到正在发送 cookie。所以我不明白为什么 Sanctum 不接受身份验证
我已经学习了几个教程,但我似乎无法理解为什么 Laravel 的 Authenticate 中间件无法看到我已经对我的用户进行了身份验证。
有谁知道我可能做错了什么?
laravel - Laravel Sancrum/气闸
我正在尝试在 Heruko 上托管一个 Laravel API (Sever) 项目以及 Vue js 项目,分别是 2 个单独的项目。是否可以使用 laravel airlock/sanctum 对 heruko 免费给定域上的用户进行身份验证?
laravel - Laravel 气闸 / sanctum auth 检查
我如何在没有 auth:sanctum 的情况下获取或检查 auth 用户。我尝试auth()->user()
从访客路由获取身份验证用户,但我只得到null
. 是的,我传递了令牌,但仍然得到空嵌套用户。但是,如果我尝试使用内部路线就可以auth:sanctum
了。
laravel - 使用 Sanctum 和常规 Laravel 身份验证
我有一个简单的网络应用程序,对我的所有网络路由使用常规身份验证。我的应用程序中只有几个地方我希望能够从 Javascript 调用一些 API 路由。我可以在不进行 SPA 样式登录的情况下设置 Sanctum 的 SPA 身份验证吗?
我已按照服务器端的说明进行操作,并且在用户使用标准路由登录之前,在我的登录页面上,我正在使用 axios 库执行 CSRF cookie 请求。但是,当我尝试点击 Sanctum 受保护的路线时,我只会被重定向到主页。
是否预计 Sanctum 基于会话的身份验证应该与常规应用程序登录一起使用?
编辑
我找到了问题所在。在EnsureFrontendRequestsAreStateful
是这个功能:
$referer
在我的请求中为 null,因此此函数无法返回 true。如果将“referer”更改为“host”,它就可以工作。这可以接受吗?它是否仍然满足功能的要点,即“给定的请求来自第一方应用程序前端”还是我没有考虑到安全隐患?
laravel - 在 Laravel Sanctum/Airlock 中出现 401 错误
我使用 Laravel 作为我的Next JS应用程序的后端,并使用Sanctum来处理身份验证。
我能够让会话身份验证在前端正常工作,但是当我尝试从节点服务器向API发出请求SSR时,我得到一个401 Unauthorized error
.
有什么方法可以让客户端和节点服务器都进行身份验证?
我正在运行 APIlocalhost:8000
和 Next 服务器localhost:3000
。我env.
用有状态域重载了我的域,试图让它工作:
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。
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”从更改false
为true
在我看来,cookie 信息并没有通过 api 调用(但我真的不确定)。此设置适用于我的本地计算机,但不适用于我已部署到的服务器。
vue.js - 为 Laravel sanctum 获取 401 未授权
我将 Laravel Sanctum 与 Vuejs SPA 一起使用。两者都驻留在同一个顶级域
当使用 axios 从 VueJS SPA 调用并且成功设置 XSRF-TOKEN 时,登录和注销(端点)工作正常,但是当我调用其他 api 端点时,它给了我 401 未授权。
在 axios 中,这是被设置的
我有以下配置
在 Laravel .env 中
在 Routes/Api.php 中
在 cors.php 中
有人可以帮帮我吗?
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 的末尾时,这似乎是有效的。尽管如此,奇怪的是为什么它在我手动从查询中删除字符之前起作用。