我正在研究CI项目。 以下是一个场景:
有一个项目A(文件夹A),里面有很多不同的门户网站说B,C,D,E等。 当我需要从C注销时,它也应该从B注销,反之亦然。 同样,如果我们不想从D退出,那么如何处理这种情况。目前,我陷入了这种情况。
实际上,在我的案例中,项目A包含8个门户网站。即使我正在路由到每个门户网站的注销页面,那么它也无法正常工作。
我试过删除CI的默认cookie但在任何情况下都不起作用。 我的助手,用于检查用户是否登录:
if ( ! function_exists('_is_frontuser_login')){
function _is_frontuser_login($thi){
$userid = $thi->session->userdata('userid');
// echo $userid;die();
//$usertype = $thi->session->userdata('user_type');
if(isset($userid) && $userid!=""){
return true;
}else{
return false;
}
}
}
注销页面包含以下代码: -
public function adslogout(){
$this->session->sess_destroy();
redirect("User/index");
}
我与很多开发人员讨论过这个问题,他们给我建议在session.php中进行更改。我尝试过但没有成功。
请帮帮我。
由于
答案 0 :(得分:0)
您的解决方案是不保留sessionID,而是创建每个门户网站令牌表。这样,如果要注销Portal A,则删除附加到该sessonID和Portal A的令牌。同样,如果您应该同时自动注销Portal C,则可以执行此操作。实际上,您可以创建一个会话,但附加了与不同门户网站相关的令牌。
答案 1 :(得分:0)
尝试为每个成功登录的每个门户创建一个会话,如:
$this->session->set_userdata('portal_A',$loggedinCredentials);
$this->session->set_userdata('portal_B',$loggedinCredentials);
$this->session->set_userdata('portal_C',$loggedinCredentials);
然后取消设置相应的会话,如果他们在以下门户网站上注销:
$this->session->unset_userdata('portal_C');
然后在每次访问门户网站时,您只需使用 isset()检查门户网站会话是否存在。
阅读:https://www.codeigniter.com/user_guide/libraries/sessions.html?highlight=session#