gpt4 book ai didi

php - Codeigniter - session 过期和 "remember me"功能

转载 作者:可可西里 更新时间:2023-10-31 22:44:37 24 4
gpt4 key购买 nike

我正在 Codeigniter 中构建“记住我”功能,通常我会看到库/项目使用 token 在用户身上设置 cookie,该 token 保存在数据库中,并在用户每次访问网站时进行比较。

在 Codeigniter 中我们可以设置 session 过期时间,这让我尝试了一种不同的方法,这就是我所做的:

  • 我将配置中的 session_expiration 设置为 0(无限 session )
  • 如果用户未选中“记住我”,我会在 session 中设置 2 小时的时间,并在窗口关闭时销毁 session 。

所以我的登录代码是这样的:

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+数据库 token 相比,此解决方案的任何输入都很棒。

最佳答案

对于这个问题,我找到的最简单的解决方案是通过这种方式修改 Codeigniter 创建的 cookie:

        $this->session->set_userdata('user', $user); // a cookie has been created
if($this->input->post('remember_me'))
{
$this->load->helper('cookie');
$cookie = $this->input->cookie('ci_session'); // we get the cookie
$this->input->set_cookie('ci_session', $cookie, '35580000'); // and add one year to it's expiration
}

关于php - Codeigniter - session 过期和 "remember me"功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14550213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com