php - Laravel 会话不存储在多个域中
问题描述
我正在使用中间件根据域选择内容,但仅在其中一个中存储会话。想法不是在他们之间共享会话。每个域都必须有它的会话。
问题的示例是 CSRF 令牌在每次重新加载时都会刷新。
我已经尝试为每个域(cookie 名称、路径、域)设置配置并尝试过 cookie、文件和数据库。这些都不起作用。
部分中间件代码:
config([
'session.domain' => $domain,
'session.cookie' => $slugDomain . '_session',
'session.path' => '/' . $slugDomain
]);
解决方案
有多种方法可以做到这一点,这里我分享一个选项:您可以在域 1 的 url 中传递 id,然后将此 id 存储到域 2 的 cookie 中:
您可以为特定会话创建 cookie:
Route::get('setcookie', function(){
Session::setId($_GET['id']);
Session::start();
return 'Cookie created';
});`
然后你应该能够让你的用户通过$user = Auth::User;
这就是我在我的案例中找到解决方案的方式。
另一种解决方案是将域设置app/config/session.php
为此:
'domain' => '.domain.com'
推荐阅读
- amazon-ec2 - 更新附加到 EC2 实例的所有资源的标签
- node.js - 使用 NodeJS 依次执行 SQL 查询
- javascript - Travis CI 在 tsc 上失败
- vb.net - Rijndael 加密和解密在另一台计算机上不起作用
- python-3.x - Yaml 内容解析并从中生成列表 - 出错了(python 3.x)
- c++ - 为什么 nlohmann 不释放内存
- javascript - Wepack url-loader 忽略 CSS 背景
- flutter - “FileSystemException:无法打开文件,路径 = 'C:\Users\flutter\bin\cache\lockfile'(操作系统错误:访问被拒绝
- python - Python绘图将一种颜色和标记图例添加到多列数据框
- r - 在第二个参数上调度`:=`