没有 cookie 的 Laravel 会话
Posted
技术标签:
【中文标题】没有 cookie 的 Laravel 会话【英文标题】:Laravel sessions without cookies 【发布时间】:2016-07-02 04:16:54 【问题描述】:我有一个允许用户登录并将商品添加到购物篮的应用程序,但是如果用户关闭了 cookie,此功能将不再起作用。我检查了 facebook,结果发现他们甚至需要启用 cookie 才能运行。
所以我的问题是是否可以在没有 cookie 的情况下处理常规登录/添加到购物车功能?
【问题讨论】:
你使用的是哪个版本的 Laravel?您可以更改会话配置文件中的会话驱动程序config/session.php
你不能创建一个数据库驱动的系统吗?
我正在使用 laravel 5.1,并且我当前的会话驱动程序设置为 db,但是,由于它没有在客户端存储任何内容,因此我的 CSRF 令牌验证失败了。所以我试图找出一种方法来链接客户端和服务器
【参考方案1】:
这不仅是 Laravel 特有的。检查http://php.net/manual/en/session.configuration.php(特别是session.use_cookies
和session.use_only_cookies
),了解如何启用_GET 参数。
与往常一样,文档警告您,当您通过 _GET 传递 ID 时,窃取 SESSION 会变得很容易。
但是一旦你启用它们,PHP 应该会自动重写你的 URL,所以你不需要额外的工作,但我个人会将会话限制在单个 IP 和用户代理 - 应该让攻击者很难。
【讨论】:
【参考方案2】:我可以在你的问题中看到 Laravel 标记,所以我给你一个链接,指向在 Laravel 中使用会话的所有可能方式:
https://laravel.com/docs/5.1/session
【讨论】:
但是,如果我的用户关闭了 cookie,比如完全关闭,这是否允许他们完全使用应用程序。 根据 5.2 文档,laravel 存储一个 'laravel_session' cookie,其中包含所有驱动程序的会话实例 ID。也许除了数组。检查/config/session.php以上是关于没有 cookie 的 Laravel 会话的主要内容,如果未能解决你的问题,请参考以下文章
当会话 cookie 在 Laravel 中过期时重新加载站点