我有2个子域,我正在尝试通过子域验证用户。
场景: 子域名:abc.example.com,xyz.example.com
用户可以从两个域中的任何一个登录(登录表单)。 身份验证是从abc.example.com完成的(即请求仅发送到abc.example.com)。
当用户从xyz提交表单时,会向abc发送请求并完成身份验证。成功登录后,页面将重定向回xyz。
现在xyz在xyz上创建一个会话,一切正常,但abc似乎无法在身份验证期间找到已创建的会话。
感谢任何帮助。
答案 0 :(得分:0)
您可以使用2个身份验证存储执行此操作,每个子域一个
以这种方式在Module.config中创建2个身份验证存储和1个身份验证服务
public function getServiceConfig() {
$subDomainAbc = "abc.example.com";
$subDomainXyz = "xyz.example.com";
$address = ''; // Get the correct address here
$authenticationService = function($sm){
// Declare and return the authentication service here
};
if($address === $subDomainAbc) {
return array(
'factories' => array(
'AuthenticationStorage' => function(){
return new AuthenticationStorageAbc("ABCAuthNamespace");
},
'AuthenticationService' => $authenticationService
)
);
} else {
return array(
'factories' => array(
'AuthenticationStorage' => function(){
return new AuthenticationStorageXyz("XYZAuthNamespace");
},
'AuthenticationService' => $authenticationService
)
);
}
}
验证存储现在将相应地返回正确的会话服务到子域。
希望它有助于某人