php - Laravel 子域 : single auth across all subs not working?

标签 php laravel authentication session subdomain

我正在构建一个具有动态子域系统的站点,例如 (name.domain.com)。我将 Ubuntu 与 laravel 的 serve 命令一起使用。
我在我的 route 设置了所有内容:

Route::domain('{x}.localhost')->group(function (){
    Route::get('/url/',  'SomeController@someAction')->middleware('can:xyz,x')->name('someName');
});
现在,一切都很好,除了 Auth 被子域锁定
eg(xyz.localhost:8000/, localhost:8000/) 需要单独登录。
在我阅读了一些谷歌搜索之后,我可以在“域”下的 config/session.php 文件中覆盖它。因此,在我的 .env 文件中,我为 SESSION_DOMAIN 设置了一个新变量并将其指向“.localhost”或“.localhost:800”或仅用于测试我得到的 IP 127.0.0.1/:8000 与建议相同,但是当我尝试在登录后立即登录我的 session 无效,例如(我登录并重定向到正确的路线,但我的身份验证发现我没有登录)
session 配置
'domain' => env('SESSION_DOMAIN', null),
我的 .env
SESSION_DOMAIN=.localhost
似乎出于某种原因没有设置 cookie?
可能应该注意到这是同时使用文件和数据库进行 session 的情况,我还每次都清除了缓存和 session 存储以及 cookie 等。
- 在过去的几天里,我已经尝试了所有我能想到的方法来解决这个问题,但没有运气。即使在全新安装的 laravel 上也存在同样的问题。
我可以在主 URL 上使用 FF 登录,但在子 URL 上我没有登录,如果我尝试,我会得到 419。
有什么建议?亲切的问候,马特
-编辑
要在新安装的 laravel 上重现,首先,安装 auth 包:
composer require laravel/ui

php artisan ui vue --auth
npm run dev
接下来,使用您的 Mysql 数据库信息编辑您的 .env 文件,并将此行添加到文件中:
SESSION_DOMAIN=.localhost
最后将其添加到您的 web.php 路由文件中。
Route::domain('{foobar}.localhost')->group(function (){
    Route::get('/test/',  'HomeController@index');
});
(我喜欢在命令行中在这里创建一个帐户)
然后推送默认迁移并通过登录主页和任何子域来运行服务器和测试。

最佳答案

好吧,这是因为 localhost 域,而是使用诸如 something.test 之类的虚拟域,然后设置 SESSION_DOMAIN=.something.test 并清除缓存。 localhost 和 127.0.0.1 不是同一来源,因此无法设置 session 。

关于php - Laravel 子域 : single auth across all subs not working?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62284200/

相关文章:

c# - 在C#中记录登录、注销、系统锁定/解锁事件

php - 如何将 select 的输出转换为 Eloquent 列表?

javascript - 将名称发布到 php MYSQL 数据库

php - 在 PHP 中打开 OSX 文件包的推荐方法是什么?

php - 在 PHP 中预增量并定义魔法 get 和 set

php - Laravel Eloquent -- 表中的多条记录插入(具有唯一约束的列)

php - Laravel 参数太多,调度时预期参数为 "command"

c# - ASP.NET Core 中基于 token 的身份验证

C# REST webservice认证问题

php - Exception、InvalidArgumentException 或 UnexpectedValueException 之间有什么区别?