Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session ‘;记住我’;登录CodeIgniter_Session_Codeigniter_Login - Fatal编程技术网

Session ‘;记住我’;登录CodeIgniter

Session ‘;记住我’;登录CodeIgniter,session,codeigniter,login,Session,Codeigniter,Login,如何在CodeIgniter中实现这一点?(此答案是对原始问题的回答) 你会怎么做?或者,你会怎么做 您可以创建一个具有更长时间的会话 有效期比其他的要长 所有创建的会话都将使用 中相同的$config['sess_expiration'] 配置文件(默认值:7200秒), 是否有方法传递自定义值 ? 延长会话cookie的过期时间对“记住我”功能不起作用,因为用户在关闭浏览器时会丢失会话cookie。如果CodeIgniter没有本机的“记住功能”,那么您需要编写一些东西来删除一个长寿命coo

如何在CodeIgniter中实现这一点?

(此答案是对原始问题的回答)

你会怎么做?或者,你会怎么做 您可以创建一个具有更长时间的会话 有效期比其他的要长

所有创建的会话都将使用 中相同的$config['sess_expiration'] 配置文件(默认值:7200秒), 是否有方法传递自定义值 ?


延长会话cookie的过期时间对“记住我”功能不起作用,因为用户在关闭浏览器时会丢失会话cookie。如果CodeIgniter没有本机的“记住功能”,那么您需要编写一些东西来删除一个长寿命cookie,其中包含的信息将允许服务器在再次看到它时自动登录

有一篇关于的好文章,可以概括为:

  • 当用户在选中“记住我”的情况下成功登录时,将显示一个登录名 cookie是在 标准会话管理cookie
  • 登录cookie包含用户的用户名和一个随机数 (从这里开始的“令牌”)来自 适当大的空间。用户名和 令牌以成对的形式存储在 数据库表
  • 当未登录的用户访问该站点并显示登录cookie时, 将查找用户名和令牌 在数据库中。 1.如果存在该对,则认为该用户已通过身份验证。 已使用的令牌将从中删除 数据库生成一个新的令牌, 使用用户名存储在数据库中, 并通过新登录发布给用户 曲奇 2.如果该对不存在,则忽略登录cookie
  • 仅通过此机制进行身份验证的用户是 不允许访问某些 受保护的信息或功能 例如更改密码、查看 个人识别信息,或 花钱。执行这些 操作时,用户必须首先 成功提交正常的 用户名/密码登录表单
  • 因为这种方法允许用户有多个记忆 从不同浏览器或浏览器登录 对于计算机,提供了一种机制 用户必须删除所有已记住的内容 在单一操作中登录
  • 另一篇文章在中为这些想法构建了更多的安全性


    如果您遵循这些文章中的实践,您不会犯太大的错误

    您可能需要重新考虑“改进的持久登录Cookie最佳实践”中的建议。我已经在网站上发布了我对问题的分析,但要点如下:

    没有安全线路,无论发生什么情况,

    (*所说的“安全线路”,我指的是SSL/VPN隧道/公钥加密-或强健的质询响应方案*)

    我完全支持持久登录最佳实践,但有一点是,再多的欺骗也无济于事,唯一的提升途径是SSL。

    感谢您的解决方案。 我已经在我的CI项目中实现了这一点

    开发人员注意:cookie应该有一个安全的哈希作为memberme密钥。 -不要只存储用户id) -不要存储密码, -并且不要存储密码的散列。 这样人们就不能自动登录任何帐户

    最坏情况:一旦黑客发现散列方法,您可以在一个地方调整密钥生成器函数,然后重新设置安全性。我会调整盐和胡椒的线

    希望有帮助。
    Chris D.-来自澳大利亚:)

    对于这些内容,所有类中的CI变量都可以通过其自己的库访问:

    例如:

    $this->session->sess_expiration = 500000;
    

    希望能解决您的问题。

    github上有一个库,请记住我下载它

    使用此库的setCookie()函数,会发生以下情况:

    1.生成包含唯一编号的cookie 这个数字与传递给setCookie()的netid/用户名一起记录到一个名为ci_cookies的数据库表中


    2.调用verifyCookie()函数时,浏览器的cookie哈希必须与记录到数据库的哈希相匹配。如果是,verifyCookie()将返回true并在主页上转发它

    U需要在加载会话之前设置conf

    $do_not_remember = (boolean) $this->input->post('do_not_remember');
    if ($do_not_remember) {
       $this->config->set_item('sess_expiration', 0);
       $this->config->set_item('sess_expire_on_close', true);
    }
    $this->load->library('session');
    

    是的,好文章,但不完全是我要找的。我想知道的是在CI中执行特定任务(设置比其他会话更长的会话)的一种方法:DExtending会话cookie的过期对于“记住我”功能不起作用,因为用户在关闭浏览器时将丢失会话cookie。如果CodeIgniter没有本机的“记住特性”,那么上面介绍的想法将帮助您实现一个。好的,现在我看到了问题中的缺陷。应该是“如何在CI中实现此功能?”。我真傻。我先等一会儿再接受你的建议。谢谢Paul.CodeIgniter现在有一个
    sess\u expire\u on\u close
    设置。理论上,如果会话通过
    sess\u use\u database
    存储到数据库中,则可以将
    sess\u expire\u on\u close=FALSE
    设置为
    sess\u expire
    并使用较大的值来保持会话活动,即使在浏览器窗口关闭后也是如此。这在实践中是可行和安全的吗?很有趣。哪一个是你的分析?最后一个,以“Jens Roland”的名义发布。它应该在comments()的第二页上。SSL并不能真正解决任何问题。背景信息:针对Cookie的大多数攻击要么是XSS,要么是浏览器错误,要么是破坏客户端。设置Http只修复XS(不需要SSL),而SSL对修复其他XS没有任何作用。即使它绝不是万无一失的,SSL仍然有比平均水平更好的机会挫败#1攻击模式(通过网络进行拦截)#2和#3只是简单的游戏,超出了认证措施的范围,正如你所说的,httpOnly只修复了#4。你只是在转述我在前面链接的帖子中引用的内容:“嗯,