Laravel Sanctum和Tenancy未经身份验证的API令牌

时间:2020-09-21 12:17:28

标签: laravel multi-tenant laravel-sanctum

我在Laravel Sanctum上遇到问题,已经搜索了将近1个星期,却没有找到解决方案,我将Sanctum与hyn /多租户一起使用,我不使用SPA身份验证,但使用API​​令牌身份验证。租户可以很好地进行身份验证并生成令牌,但是由于某些原因无法访问受auth:sanctum中间件保护的路由,这仅在租户用户发生,令牌丢失或未传递,重定向到登录。

我不认为问题出在租赁包上,我认为这与圣域有关,因为在主域中可以正常工作,而对子域中间件圣所则不起作用,因为失去了API令牌授权。

我也定义了SANCTUM_STATEFUL_DOMAINS和SESSION_DOMAIN,但不起作用,我也通过了X-XSRF-TOKEN,它也不起作用

这是我的 SANCTUM_STATEFUL_DOMAINS = new-api.test

和 SESSION_DOMAIN = .new-api.test

2 个答案:

答案 0 :(得分:0)

在第三级域上,检查您的.htaccess文件是否具有以下指令:

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

我遇到了类似的问题:Laravel sanctum unauthenticated

答案 1 :(得分:0)

您必须扩展PersoanlAccessToken并添加use UsesTenantConnection; 而不是提供商的启动方法中,您需要在使用自己的模型的位置添加Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class);

我正在使用spatie的租户,并且执行了以下操作:

<?php


namespace App\Models\Tenant;
use Laravel\Sanctum\PersonalAccessToken as SanctumPersonalAccessToken;
use Spatie\Multitenancy\Models\Concerns\UsesTenantConnection;

class PersonalAccessToken extends SanctumPersonalAccessToken
{
    use UsesTenantConnection;
}

并在我的AppServiceProvider中添加了

Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class);

我自己的模特

希望这会有所帮助