dra*_*ank 89 php authentication session cross-domain
我想设置以下内容:
auth.example.com
sub1.example.com
sub2.example.com
Run Code Online (Sandbox Code Playgroud)
如果用户访问sub1.domain.com或sub2.domain.com且他们未登录,则会将其推送到auth.domain.com并登录.sub1.domain.com和sub2.domain.com是两个单独的应用程序但使用相同的凭据.
我尝试在php.ini中设置以下内容:
session.cookie_domain = ".example.com"
Run Code Online (Sandbox Code Playgroud)
但它似乎没有将信息从一个域传递到另一个域.
[编辑]
我尝试了以下方法:
sub1.domain.com/test.php
session_set_cookie_params(0, '/', '.example.com');
session_start();
print session_id() . "<br>";
$_SESSION['Regsitered'] = 1;
echo '<a href="http://auth.example.com/test.php">Change Sites</a>'
Run Code Online (Sandbox Code Playgroud)
auth.domain.com/test.php
session_set_cookie_params(0, '/', '.example.com');
session_start();
print session_id() . "<br>";
$_SESSION['Checked'] = 1;
print_r($_SESSION);
Run Code Online (Sandbox Code Playgroud)
会话ID完全相同但是当我转出$ _SESSION变量时,它不显示两个键,只是我在每个域下设置的任何键.
[编辑2]
我更新了[编辑]
jer*_*oen 130
我不知道问题是否仍然存在,但我遇到了同样的问题,并在调用session_set_cookie_params()之前解决了设置会话名称的问题:
$some_name = session_name("some_name");
session_set_cookie_params(0, '/', '.example.com');
session_start();
Run Code Online (Sandbox Code Playgroud)
我在php.ini中没有改变任何东西,但现在一切正常.
dre*_*ewm 24
有一两件事可以神不知鬼不觉防止被读取区域上的会话数据,尽管饼干被正确设定.example.com是PHP了Suhosin补丁.根据问题中的示例,您可以正确配置所有内容,但它可能无法正常工作.
关闭以下Suhosin会话设置,然后您重新开始营业:
suhosin.session.cryptua = Off
suhosin.session.cryptdocroot = Off
Run Code Online (Sandbox Code Playgroud)
尝试使用:
session.cookie_domain = "example.com"
Run Code Online (Sandbox Code Playgroud)
代替:
session.cookie_domain = ".example.com"
Run Code Online (Sandbox Code Playgroud)
注意缺失的时期.
但是要小心使用它,因为并非所有浏览器都支持它.
| 归档时间: |
|
| 查看次数: |
79912 次 |
| 最近记录: |