Laravel会重新生成会话ID吗? (与CodeIgniter相比)

时间:2015-05-13 15:37:46

标签: codeigniter session laravel

CodeIgniter 2在每次http呼叫上重新生成会话ID。这导致并发ajax调用的问题。这使得客户端和服务器可能不同步并且会话丢失。对此的修复不是更新ajax调用的会话(请参阅Codeigniter session bugging out with ajax calls)。但是,如果您将CodeIgniter用作单页面应用程序的API,其中每个调用都是ajax,这只会导致会话永远不会更新。用户刚刚在会话超时后退出(默认为5分钟)。

在CodeIgniter 3中,他们尝试通过在会话存储上使用写锁定(请参阅https://github.com/bcit-ci/CodeIgniter/issues/3073)来解决此问题。因为这依赖于数据库功能,所以只能在MySQL和PostgreSQL中安全地存储会话信息。例如,不能使用Redis(参见http://www.codeigniter.com/userguide3/installation/upgrade_300.html#step-6-update-your-session-library-usage)。

最后我的问题是:Laravel如何处理这个问题? Laravel可以使用Redis进行会话存储。那么laravel何时重新生成会话ID?如果Laravel没有在每个http请求上自动重新生成它,那么如何在安全方面进行判断呢?

1 个答案:

答案 0 :(得分:1)

与pstephan1187一样,“Laravel仅在您登录并注销时重新生成会话ID”。 CSRF Protection用于cross-site request forgeries,它由POST,PUT和DELETE请求中默认(Laravel 5)所需的字段组成。

在ajax调用中处理此问题超出了Laravel提供的功能,但可以非常轻松地worked around

有关Laravel会话的更多信息,请参阅the official documentation(顺便说一句,这是一篇非常好且易于理解的内容)。