我正在 Codeigniter 中构建“记住我”功能,通常我看到库/项目使用令牌在用户上设置 cookie,此令牌保存在数据库中,并在每次用户访问网站时进行比较。
在 Codeigniter 中,我们可以设置会话过期时间,这导致我尝试不同的方法,这就是我所做的:
- 我将配置中的 session_expiration 设置为 0(无限会话)
- 如果用户未选中“记住我”,我会在会话中设置 2 小时时间,并在窗口关闭时销毁会话。
所以我的登录代码如下所示:
if (!$this->input->post('remember_me')) {
$this->session->sess_expiration = 7200;
$this->session->sess_expire_on_close = TRUE;
}
$this->session->set_userdata($session_data);
还有我的配置文件:
$config['sess_expiration'] = 0;
$config['sess_expire_on_close'] = FALSE;
我没有看到人们在项目中使用这个解决方案,我已经对此进行了测试,但它似乎工作正常。
所以,对于我的问题,你会说这是一种安全的做法吗?我应该知道任何安全隐患吗?对此解决方案与 cookie+数据库令牌的任何输入都会很棒。