Laravel圣所未经验证

时间:2020-03-25 04:47:45

标签: laravel-7 laravel-sanctum

我在我的项目中使用Laravel圣所,并以angular为前端。从第二个api请求中获取未经身份验证的信息。请让我知道我要去哪里了

前端-> 127.0.0.1:4200

后端->本地​​主机:8888

.env配置

SESSION_DOMAIN =本地主机 SANCTUM_STATEFUL_DOMAINS = 127.0.0.1

将中间件 auth:sanctum 添加到api.php中的路由组

参考: https://prnt.sc/rm9ejy

6 个答案:

答案 0 :(得分:3)

例如添加您的域 我的 API 在 localhost:8000 上运行我的客户端在 localhost:3000 上运行所以我的环境设置如下

SANCTUM_STATEFUL_DOMAINS=localhost:8000,localhost:3000

另外,添加您的会话域

SESSION_DOMAIN=localhost

答案 1 :(得分:2)

从您共享的屏幕截图中,我看到您的域是localhost而不是127.0.01,只需执行以下操作:

SANCTUM_STATEFUL_DOMAINS=localhost

答案 2 :(得分:2)

对于使用Laravel Homestead的任何人,请使用您的实际域。

SANCTUM_STATEFUL_DOMAINS=homestead.test

答案 3 :(得分:1)

对于任何出现“取消身份验证”错误的人,请确保您遵循以下步骤。

  • 向/ sanctum / csrf-cookie发送发帖请求
  • 将发布请求发送到Web路由/ login以进行身份​​验证

完成此步骤后,您将通过 auth:sanctum 中间件通过API路由成功进行身份验证。

其他需要注意的事情:

  1. 确保将您的SESSION_DOMAIN设置为 localhost
  2. SANCTUM_STATEFUL_DOMAIN设置为您的子域/ SPA,端口为例如localhost:8000

对于原始问题,请确保您维护相同的域。我的意思是两者都使用localhost。并设置SANCTUM_STATEFUL_DOMAIN = localhost:4200

已编辑

还设置了SESSION_DRIVER

答案 4 :(得分:0)

您正在运行哪个版本?从V2.4.0开始,您需要指定端口:

SANCTUM_STATEFUL_DOMAINS=localhost:4200

有关更多信息,请参见此issue

答案 5 :(得分:0)

经过两天的痛苦和绝望才能得出这个结论:Bearer令牌未附加到请求中,这是由于我的.htaccess配置所致。

如果您像我一样无法通过API令牌进行身份验证,请尝试在您的Laravel项目的公共目录中的.htaccess文件中添加以下行:

RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteEngine On指令之后。

信用:Laravel not detecting auth token sent in the header and JWT package

相关问题