问题标签 [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 投票
0 回答
638 浏览

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 中间件

0 投票
0 回答
236 浏览

laravel - 如何获取 laravel sanctum 的详细信息

我知道使用 JWT,您可以解码令牌并从中获取详细信息。这样做,您可以在您的独立前端应用程序中进行验证。(例如 Vue js)

有没有办法用 laravel sanctum 做同样的事情,但 SPA 不在同一个域上?如果是,请问如何?

0 投票
0 回答
1074 浏览

php - Laravel Sanctum 测试

我正在尝试测试我的 API 身份验证方法,因此我创建了 ConfirmPasswordControllerTest :

我使用 dd() 检查响应中的错误消息,我一直看到:

我不明白这里发生了什么,我使用的是 Laravel Sanctum,所以我的 api 路由有 auth:sanctum 中间件。

编辑:如果我在帖子中不包含任何数据,例如:

测试按预期运行:

编辑 2:我调试应用程序,我发现问题出在 PasswordConfirmController 上:

它调用 resetPasswordConfirmationTimeout() 并且此方法需要使用会话:

0 投票
1 回答
7870 浏览

cors - Laravel Sanctum:被带有 Nuxt Auth 模块的 CORS 策略阻止

我有一个由Valet提供的Laravel网站和一个Nuxt SPA 。当我尝试使用Nuxt Auth模块对Sanctum进行身份验证时,出现以下 CORS 错误:backend.testnuxt.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

0 投票
1 回答
748 浏览

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
0 投票
5 回答
4458 浏览

php - Laravel Sanctum Token API 身份验证在 Postman 中不起作用

我正在尝试将 Sanctum 用于仅 API 的应用程序。我没有将它用于 SPA。我有一个由 Sanctum 中间件设置和保护的端点。我正在通过 tinker cli 工具为该用户创建一个用户和一个令牌。然后,我将令牌粘贴到授权选项卡中不记名令牌选择下的 Postman 中。但是,当我提交请求时,我收到一个未经身份验证的错误。不太确定我在这里做错了什么。密切关注提供的文档以及我能找到的稀疏视频。以下是一些代码片段。我很欣赏这里的洞察力。

API.php

中间件/Authenticate.php

我的控制器的功能

0 投票
4 回答
7153 浏览

php - Laravel Sanctum 身份验证问题

我遇到了子域和 laravel sanctum 的问题。在子域上,我未经授权。它在本地工作得很好。

我已将域添加到 sanctum domain/.env。我还根据有关子域的 laravel 文档设置了 cors/config,但没有运气。网站上有一个 Htpasswd,这会导致问题吗?我没有想法:(。

以前有没有人在使用 htpasswd 时遇到过这种情况?如果您需要一些代码,请随时询问,

编辑*

cors配置

圣所配置

.env

我把它添加到 axios

调用

我已经删除了域名,因为我不能透露名称,但原理是一样的。

人们已经要求提供代码,但是没有太多可避难所。该网站不是一个完整的 SPA。我只是在刀片视图中使用 vue 组件。

更新

我已经删除了 htpasswd,但我仍然有这个问题。我可能有 30 个不同的站点,每个站点上的一切都是一样的,并且没有运气让它在子域上工作

更新

我已经通过使用代客服务和设置子域在我的本地主机上复制了这个。发生完全相同的问题!

提前谢谢大家。

0 投票
2 回答
877 浏览

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==

和我的科尔,

一切都在本地主机上完美运行。

0 投票
2 回答
6260 浏览

php - 带有 Vuejs 的 Laravel 7.x Sanctum (SPA) 总是返回 401 Unauthorized

因此,即使通读并尝试互联网上任何可能的解决方案,我也无法弄清楚这个问题。我正在将Laravel 7.xVue 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

0 投票
1 回答
472 浏览

laravel-sanctum - 用 Laravel Sanctum 中被盗的 cookie 重新认证

我使用 Laravel Sanctum 设置了 SPA 身份验证,效果很好。我使用用户成功登录。在 Chrome Devtools 中,Application > Storage > Cookies 中,我将 和 的值复制并保存laravel_sessionXSRF-TOKEN一个文本文件中,然后注销并删除所有 cookie 并刷新浏览器,在这里我注销了。

然后我重新打开 Devtools,手动恢复 和 的值laravel_sessionXSRF-TOKEN刷新浏览器,现在我的状态是已登录。

这是正常的吗?这是基于 cookie 的会话身份验证的工作方式吗?

谢谢你。