php - Laravel 与模块共享会话相同的域
问题描述
我的 2 个 laravel 项目的会话共享存在问题。我的第一个项目是 portal.blabla.test,我的另一个项目是 billing.blabla.test。
门户是身份验证。计费是在门户内加载的模块。
我使用 ajax 在门户项目中加载计费模块,但无法进行会话共享。Auth::check() 不起作用。
但是,如果我在浏览器中手动加载页面(billing.blabla.test),我就会登录。将我的模块集成到另一个共享相同身份验证的 laravel 项目中时似乎存在一些问题。
我为跨网站共享添加了 cors,我尝试在 ajax 调用上发送 csrf 令牌,我尝试将 session.php 中的值 'same_site' 更改为“lax”。
我使用 session_driver 数据库为 session.php 中的两个项目执行了此操作:
return [
//...
' domain' => '.blabla.test'
];
这是我加载模块的方式:
$.ajax({
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
url: "https://billing.blabla.test/billing",
success: function(data) {
$('#content-module').html(data);
}
});
这是我正在加载的页面:
{{ Auth::check() }}
加载模块时我看到一个空白页面,但是在https://billing.blabla.test/billing时,我可以看到“1”。
解决方案
您必须将通配符子域放入您的 session.php 配置文件中,如下所示:
<?php
return [
//...
'domain' => '.blabla.test'
];
像这样,您可以在子域之间共享会话:)
推荐阅读
- powershell - 如何从powershell中每个键的哈希表中获取值的计数
- c++ - for 循环或迭代器是遍历字符串的更快方法吗?
- applescript - applescript 中是否有应用程序类型?
- arrays - 什么是在不使用最后一项索引的情况下获取切片中最后一项以外的所有内容的单行解决方案?
- react-native - 如何从android中删除react native包
- php - 需要将显示页面的 HTML 转换为 PDF
- ruby-on-rails - 已解决在部署中,我的 Rails 应用程序将图片保存在与当前版本不同的新 capistrano 版本目录中
- javascript - 使用 src=require() 时,来自 webpack 的 Vue.js 错误“找不到模块 './undefined'”
- html - CSS 为 :host 伪类添加特异性
- sql - Postgres SQL 命令找出所有列可以是枚举但不是?