Php 拉雷维尔圣殿认证问题

Php 拉雷维尔圣殿认证问题,php,laravel,laravel-sanctum,Php,Laravel,Laravel Sanctum,我与一个子域和拉拉维尔圣所有问题。在子域上,我未经授权。它在当地运行得很好 我已将该域添加到sanctum domain/.env。我还根据laravel关于子域和无运气的文档设置了cors/config。站点上有一个Htpasswd,这可能是导致问题的原因吗?我没有主意了 在使用htpasswd之前,是否有人遇到过这种情况?如果您需要一些代码,请随时询问 编辑* cors配置 return [ /* |-------------------------------------

我与一个子域和拉拉维尔圣所有问题。在子域上,我未经授权。它在当地运行得很好

我已将该域添加到sanctum domain/.env。我还根据laravel关于子域和无运气的文档设置了cors/config。站点上有一个Htpasswd,这可能是导致问题的原因吗?我没有主意了

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

编辑*

cors配置

return [

    /*
    |--------------------------------------------------------------------------
    | Cross-Origin Resource Sharing (CORS) Configuration
    |--------------------------------------------------------------------------
    |
    | Here you may configure your settings for cross-origin resource sharing
    | or "CORS". This determines what cross-origin operations may execute
    | in web browsers. You are free to adjust these settings as needed.
    |
    | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    |
    */

    'paths' => ['api/*'],

    'allowed_methods' => ['*'],

    'allowed_origins' => ['*'],

    'allowed_origins_patterns' => [],

    'allowed_headers' => ['*'],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => true,

];
圣殿形态

return [

    /*
    |--------------------------------------------------------------------------
    | Stateful Domains
    |--------------------------------------------------------------------------
    |
    | Requests from the following domains / hosts will receive stateful API
    | authentication cookies. Typically, these should include your local
    | and production domains which access your API via a frontend SPA.
    |
    */

    'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', 'localhost,127.0.0.1')),

    /*
    |--------------------------------------------------------------------------
    | Expiration Minutes
    |--------------------------------------------------------------------------
    |
    | This value controls the number of minutes until an issued token will be
    | considered expired. If this value is null, personal access tokens do
    | not expire. This won't tweak the lifetime of first-party sessions.
    |
    */

    'expiration' => null,

    /*
    |--------------------------------------------------------------------------
    | Sanctum Middleware
    |--------------------------------------------------------------------------
    |
    | When authenticating your first-party SPA with Sanctum you may need to
    | customize some of the middleware Sanctum uses while processing the
    | request. You may change the middleware listed below as required.
    |
    */

    'middleware' => [
        'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class,
        'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class,
    ],

];
环境署署长

Iv'e将此添加到axios

axios.defaults.withCredentials = true;
Vue呼叫

getEventDays() {
axios.get(`/api/event/${this.eventSlug}/${this.slugify(this.selectedAgendaType)}/get-days`)
 .then((res) => {
 // Set the days
 this.days = res.data.data;
 // set the selected day to the day id
 this.selectedDay = res.data.data[0].id;
 // get the sessions for the day(selectedDay) e.g api call
 this.getDayWithSessions();
 })
 .catch((err) => console.error(err.response || err));
},
我已经删除了域名,因为我不能透露名称,但原则是一样的

人们要求提供代码,但是sanctum没有太多内容。该网站不是一个完整的SPA。我只是在blade view中使用vue组件

更新

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

更新

我已经通过使用valet和设置子域在本地主机上复制了这一点。同样的问题也发生了


提前感谢。

您只需要允许顶级域名,Laravel Sanctum不需要您的子域全名作为允许的有状态域名

在您的情况下,允许使用hiddendomain.com就足够了

SANCTUM_STATEFUL_DOMAINS=hiddendomain.com
我希望这有帮助


注意。

对于SPA身份验证,您需要在内核文件中的api中间件顶部添加
EncurrentEndRequestsRestateful
。然后您必须使用
web
中间件而不是sanctum

Dude,您应该删除Laravel.env文件中的引号

会话\域='.hiddendomain.com' SANCTUM_STATEFUL_DOMAIN=“events.hiddendomain.com”


希望它能起作用。

Hello@james欢迎来到StackOverflow,请查看此链接,了解如何提出一个好问题:。是的,请分享您的代码以及您试图解决此问题的方法。很好,luckHas,以前有人经历过这种情况吗?可能,但如何知道他们所经历的与您的特定设置或帮助相关你在解决你的问题吗?请修改你的问题,使其尽可能具体。另外,请看一看。我已经更新了这篇文章,虽然在代码方面没有太多内容。这更多的是关于子域和htpasswd的问题。我面临着同样的问题。我的API是API.example.com,我的SPA是example.com:3000.I我得到401未经验证。他们说在Sanctum 2.4之后,你也需要在中添加端口。env:Sanctum_STATEFUL_DOMAINS=example。test:3000仍然不工作。有任何更新吗?我发现文档不太清楚,但我发现了问题。我试图使用标准登录视图,但不起作用。我在这里解释了-嘿,兄弟,谢谢s谢谢你的帮助!不幸的是,我已经尝试过了,但我仍然存在这个问题。从那以后,我通过使用valet作为子域在本地复制了这个问题。对我来说,这个子域使用
SANCTUM_STATEFUL_DOMAINS=sub.hiddendomain.com
我也在子域上使用它,并添加了
SANCTUM_STATEFUL_domain=.maindomain.com
或者我。也可以在
app/Http/Kernel.php->$middlewareGroups->api中添加
\illumb\Session\Middleware\StartSession::class
SANCTUM_STATEFUL_DOMAINS=hiddendomain.com
SESSION_DOMAIN=.hiddendomain.com
SANCTUM_STATEFUL_DOMAIN=events.hiddendomain.com