0

因此,当会话超时以在 Codeigniter 中工作时,我无法重定向到登录页面。这可能是我的一个非常基本的错误,但我在控制器中使用的代码是:

if(!$this->session->userdata('is_logged_in')) {
    redirect('login/');
}

它可以将用户重定向到登录页面,但会不断循环回到登录页面。为什么是这样?

4

2 回答 2

1

可能是因为调用的会话中没有数据is_logged_in。如果您查看手册,您将看到存储在会话中的默认数据:

什么是会话数据?

就 CodeIgniter 而言,会话只是一个包含以下信息的数组:

用户唯一的 Session ID(这是一个具有非常强熵的统计随机字符串,使用 MD5 散列以实现可移植性,并且(默认情况下)每五分钟重新生成一次) 用户的 IP 地址 用户的用户代理数据(浏览器的前 120 个字符)数据字符串)“最后一个活动”时间戳。

您需要is_logged_in在用户登录时设置或使用已经存在的东西,例如session_idlast_activity

于 2013-10-10T18:55:48.067 回答
1

您需要检查用户是否不在登录页面上。听起来它在发出请求时正在执行。

这样的事情应该这样做:

if(!$this->session->userdata('is_logged_in') && !strstr(current_url(), 'login/')) {
    redirect('login/');
}

也可能是,就像stormdrain 说的,会话数据没有设置。

于 2013-10-10T18:56:18.980 回答