问题标签 [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.
laravel - 一起使用 Laravel Sanctum SPA auth 和 Auth UI
我有一个普通用户使用的 Vue SPA 设置。我还在创建一个系统管理区域,它不是 SPA 的一部分,而是 Laravel 应用程序的一部分(刀片视图等)。
很高兴按照https://laravel.com/docs/7.x/sanctum#spa-authentication验证 SPA
但是,当尝试使用 auth ui (bootsrap) 登录到我的管理区域(刀片视图)时,我似乎总是将 302 重定向回登录页面。
Sanctum 可以与网络身份验证中间件一起使用吗?
我的环境文件如下:
网络路由文件
Kernel.php 中的 API 中间件
laravel - 如何获取 laravel sanctum 的详细信息
我知道使用 JWT,您可以解码令牌并从中获取详细信息。这样做,您可以在您的独立前端应用程序中进行验证。(例如 Vue js)
有没有办法用 laravel sanctum 做同样的事情,但 SPA 不在同一个域上?如果是,请问如何?
php - Laravel Sanctum 测试
我正在尝试测试我的 API 身份验证方法,因此我创建了 ConfirmPasswordControllerTest :
我使用 dd() 检查响应中的错误消息,我一直看到:
我不明白这里发生了什么,我使用的是 Laravel Sanctum,所以我的 api 路由有 auth:sanctum 中间件。
编辑:如果我在帖子中不包含任何数据,例如:
测试按预期运行:
编辑 2:我调试应用程序,我发现问题出在 PasswordConfirmController 上:
它调用 resetPasswordConfirmationTimeout() 并且此方法需要使用会话:
cors - Laravel Sanctum:被带有 Nuxt Auth 模块的 CORS 策略阻止
我有一个由Valet提供的Laravel网站和一个Nuxt SPA 。当我尝试使用Nuxt Auth模块对Sanctum进行身份验证时,出现以下 CORS 错误:backend.test
nuxt.backend.test:3005
从源“ http://nuxt.backend.test:3005 ”访问“ http://backend.test/login ”处的 XMLHttpRequest已被 CORS 策略阻止:不存在“Access-Control-Allow-Origin”标头在请求的资源上。
我该如何解决?
Laravel 配置
config/cors.php
:
routes/api.php
:
app/Http/Kernel.php
:
.env
:
Nuxt配置
nuxt.config.js
:
pages/index.php
:
laravel - Laravel Sanctum with SPA: Best practice for setting the CSRF cookie
Currently, my SPA is simple and has only a contact form. The form data is sent to the backend. I have installed Laravel Sanctum for that.
This works perfectly fine. However, I was wondering. Where and which time in your SPA do you fire the initial request to get the CSRF cookie? (axios.get('/sanctum/csrf-cookie')
)
My first thoughts were:
- Every time the page is mounted/loaded
- Only when you receive a
419
and you attempt to refresh the token and retry the previous request - You don't fire any API requests, only when the user tries to log in and only then you are requesting a cookie (in my case I don't have any user authentification)
- For each API request, you wrap it with
axios.get('/sanctum/csrf-cookie')
around
php - Laravel Sanctum Token API 身份验证在 Postman 中不起作用
我正在尝试将 Sanctum 用于仅 API 的应用程序。我没有将它用于 SPA。我有一个由 Sanctum 中间件设置和保护的端点。我正在通过 tinker cli 工具为该用户创建一个用户和一个令牌。然后,我将令牌粘贴到授权选项卡中不记名令牌选择下的 Postman 中。但是,当我提交请求时,我收到一个未经身份验证的错误。不太确定我在这里做错了什么。密切关注提供的文档以及我能找到的稀疏视频。以下是一些代码片段。我很欣赏这里的洞察力。
API.php
中间件/Authenticate.php
我的控制器的功能
php - Laravel Sanctum 身份验证问题
我遇到了子域和 laravel sanctum 的问题。在子域上,我未经授权。它在本地工作得很好。
我已将域添加到 sanctum domain/.env。我还根据有关子域的 laravel 文档设置了 cors/config,但没有运气。网站上有一个 Htpasswd,这会导致问题吗?我没有想法:(。
以前有没有人在使用 htpasswd 时遇到过这种情况?如果您需要一些代码,请随时询问,
编辑*
cors配置
圣所配置
.env
我把它添加到 axios
调用
我已经删除了域名,因为我不能透露名称,但原理是一样的。
人们已经要求提供代码,但是没有太多可避难所。该网站不是一个完整的 SPA。我只是在刀片视图中使用 vue 组件。
更新
我已经删除了 htpasswd,但我仍然有这个问题。我可能有 30 个不同的站点,每个站点上的一切都是一样的,并且没有运气让它在子域上工作
更新
我已经通过使用代客服务和设置子域在我的本地主机上复制了这个。发生完全相同的问题!
提前谢谢大家。
php - 成功登录后产品/登台服务器上的 Laravel sanctum 返回 401
我目前正在开发一个 Web 应用程序,该应用程序在顶级域(mydomain.com)有一个 api,在子域(spa.mydomain.com)有一个 SPA。在我添加的 SPA 中,
axios.defaults.withCredentials = true
要登录,我运行以下代码,
get 请求按预期以 204 响应,登录的 post 请求也成功响应,此时我被重定向,另一个 GET 被发送到 /api/users/me,此时服务器以 401 未经授权的响应响应。
我会假设看起来好像我可以登录一切都会按预期工作,但遗憾的是.env
,我的 api 文件的关键位如下,看看我是否遗漏了任何明显的东西。
SESSION_DRIVER=cookie
SESSION_LIFETIME=120
SESSION_DOMAIN=.mydomain.com
SANCTUM_STATEFUL_DOMAINS=spa.mydomain.com
我的请求标头看起来像这样,
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Connection: keep-alive
Cookie: XSRF-TOKEN=eyJpdiI6InZDRTAvenNlRGhwdVNzY2p5VUFQeFE9PSIsInZhbHVlIjoiVzBLT0wyNTI2Vk5la3hiQ1M1TXpRU2pRQ3pXeGk1Nkc1eW5QN0F5ZjNFUmdIVmlaWGNqdXZVcU9UYUNVTzhXbiIsIm1hYyI6IjJmMmIyMjc4MzNkODA4ZDdlZjRhZTJhM2RlMTQ5NDg1MWM2MjdhMzdkMTFjZGNiMzdkMDM3YjNjNzM1ZmY5NjAifQ%3D%3D; at_home_club_session=eyJpdiI6ImxLYjlRNHplcGh1d2RVSEtnakxJNmc9PSIsInZhbHVlIjoiWnBjN0xheWlaNDdDUWZnZGxMUzlsM0VzbjZaZVdUSTBZL0R1WXRTTGp5emY0S2NodGZNN25hQmF1ajYzZzU3MiIsIm1hYyI6ImNlMWRmNWJhYmE1ODU3MzM1Y2Q4ZDI0MDIzNTU1OWQ4MDE3MGRiNTJjY2NjNmFmZDU5YzhjZTM4NGJlOGU5ZTkifQ%3D%3D; XSRF-TOKEN=eyJpdiI6ImhadVF0eHlEY3l4RWtnZk45MmVxZ2c9PSIsInZhbHVlIjoiRCs4QkNMRjBodzJKaFIvRVQwZUZlM3BzYmlJMGp0Y0E5RXdHdkYrblVzSzNPQTJZbE42ZlhlYllmWlg2a0ltMSIsIm1hYyI6IjA1NWU0ZjFiNDFjN2VkNjNiMzJiNjFlNTFiMjBmNWE3MzA4Yzk1YmJiNzdmZGUyZmZhNjcwYmQxZTYxYTBmY2QifQ%3D%3D; at_home_club_session=eyJpdiI6IjZxWXZSYjdGWXU5SHBKSFFRdGQycWc9PSIsInZhbHVlIjoiU3RyTDdoNGJBUW93ck9CTmFjVFpjRTRxMVVwQzZmcjJJTXJUNFU0UUZVcnkzcWdBbzZxWjNvTWZrZmFuMXBrbSIsIm1hYyI6IjFkOTFiNDg5YmZjYmE0NGZiZDg3ZGY5ZDQyMDg2MGZjNzFlMmI0OTA1OGY2MzdkMmFmOGI0ZTlkOTE4ZDM0NWUifQ%3D%3D; XLtgHBp79G2IlVzFPoHViq4wcAV1TMveovlNr1V4=eyJpdiI6ImZiRThmNUpBb3N0Z21MVHJRMVIvRFE9PSIsInZhbHVlIjoiVDV5S2tDOTFNcElqc1NINVpsdi9Ibk04cFVSekkvSytvY01YUDFIbENhZkV3VnVTaHpOTjlwUjROVnFlMk96SWgwUlByZFU3MlA0YVhTelFDaEVTdndkQnczUFZ3bXJlVHpUTkZwb3Z2d1Z1VUI1STJkeG1ZMm13N0h3S282V2l3MmlvUmFrQXY4SXFFaHcrNjBucktJcmRmSk81UUtFcUFlOCtNaUZHelJpRmxkY2gyZVFOWWRUWTdqZ2NFYi85WlVBeFJ2bm5xU05IU3F1aE0ybXlzUnltRUh6eG1qZklaVW9GSDRsU3RMWmRrL242WjJ5VFZVa3dDTWtIN051SThUa0FjZDFsSXp6SmNSTWFWTDl5dk5IczFKcEpSWS9qZUZiMGVENTdKcjVrTlBITWRjV2dUY1RmcElNL0FUSzQxS0JGZFBzUWVha3ZIOVh6YWpTZnNZa202bHB1akQvakVHWTRZU1Z1WWFZZmxIcDN2bDZrek9JRHkybE01b3BlTWErYmhKK2xQN0FmTzhZS3M3bTBHUVJaSzhIdzBGWlc4Vjd1QVJCSFovZz0iLCJtYWMiOiI2ZWZlYWIwYzhlZjMyZjlkNTI0ZWJmYjFhMzExYTIxZTkyNDM1ODM3ODg1YjlmM2ZiOTVhMTMwYTAwYjk4NjhiIn0%3D
Host: mydomain.com
Origin: http://spa.mydomain.com
Referer: http://spa.mydomain.info/account
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36
X-XSRF-TOKEN: eyJpdiI6ImhadVF0eHlEY3l4RWtnZk45MmVxZ2c9PSIsInZhbHVlIjoiRCs4QkNMRjBodzJKaFIvRVQwZUZlM3BzYmlJMGp0Y0E5RXdHdkYrblVzSzNPQTJZbE42ZlhlYllmWlg2a0ltMSIsIm1hYyI6IjA1NWU0ZjFiNDFjN2VkNjNiMzJiNjFlNTFiMjBmNWE3MzA4Yzk1YmJiNzdmZGUyZmZhNjcwYmQxZTYxYTBmY2QifQ==
和我的科尔,
一切都在本地主机上完美运行。
php - 带有 Vuejs 的 Laravel 7.x Sanctum (SPA) 总是返回 401 Unauthorized
因此,即使通读并尝试互联网上任何可能的解决方案,我也无法弄清楚这个问题。我正在将Laravel 7.x与Vue js一起使用,并在Sanctum SPA身份验证方面苦苦挣扎。
登录请求工作正常,它使用web.php中定义的Auth::routes()
但是,对auth:sanctum 中间件下的api.php中定义的 API 发出的任何请求都会返回 401。例如,调用获取用户对象失败,状态为 401:
这是请求标头:
这是web.php
这是api.php
这是sanctum.php中的有状态对象
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', 'localhost,127.0.0.1,127.0.0.1:8000')),
在 vue.js 方面,我将 withCredentials 标志设置为 true:
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
window.axios.defaults.withCredentials = true;
在cors.php中, suports_credentials 标志也设置为 true
而且,这是我的Kernel.php
laravel-sanctum - 用 Laravel Sanctum 中被盗的 cookie 重新认证
我使用 Laravel Sanctum 设置了 SPA 身份验证,效果很好。我使用用户成功登录。在 Chrome Devtools 中,Application > Storage > Cookies 中,我将 和 的值复制并保存laravel_session
到XSRF-TOKEN
一个文本文件中,然后注销并删除所有 cookie 并刷新浏览器,在这里我注销了。
然后我重新打开 Devtools,手动恢复 和 的值laravel_session
,XSRF-TOKEN
刷新浏览器,现在我的状态是已登录。
这是正常的吗?这是基于 cookie 的会话身份验证的工作方式吗?
谢谢你。