use*_*941 7 laravel-7 laravel-sanctum
我在我的项目中使用 Laravel sanctum,以 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
Had*_*azi 20
添加您的域,例如我的 API 在 localhost:8000 上运行,我的客户端在 localhost:3000 上运行,所以我的环境设置如下所示
SANCTUM_STATEFUL_DOMAINS=localhost:8000,localhost:3000
Run Code Online (Sandbox Code Playgroud)
另外,添加您的会话域
SESSION_DOMAIN=localhost
Run Code Online (Sandbox Code Playgroud)
jrr*_*n90 13
你检查过你的 Kernel.php 吗?app/Http/Kernel.php
确保取消注释\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,,因为默认情况下它已被注释
'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
Run Code Online (Sandbox Code Playgroud)
经过两天的痛苦和绝望,得出了这个结论:承载令牌没有附加到请求中,这是因为我的 .htaccess 配置。
如果您像我一样无法通过 API 令牌进行身份验证,请尝试将此行添加到 Laravel 项目公共目录中的 .htaccess 文件中:
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Run Code Online (Sandbox Code Playgroud)
就在RewriteEngine On指令之后。
鸣谢:Laravel 未检测到标头和 JWT 包中发送的身份验证令牌
对于任何遇到未经身份验证错误的人,请确保您按照以下步骤操作。
这一步之后,你将通过API 路由中的auth:sanctum中间件成功认证。
其他需要注意的事项:
对于原始问题,请确保您保持相同的域。我的意思是两者都使用 localhost。并设置 SANCTUM_STATEFUL_DOMAIN = localhost:4200
已编辑
同时设置 SESSION_DRIVER
从您分享的屏幕截图中,我看到您的域名是 localhost 而不是 127.0.01,只需执行以下操作:
SANCTUM_STATEFUL_DOMAINS=localhost
Run Code Online (Sandbox Code Playgroud)
对于使用 Laravel Homestead 的任何人,请使用您的实际域名。
SANCTUM_STATEFUL_DOMAINS=homestead.test
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9314 次 |
| 最近记录: |