没有 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_cookiessession.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 会话的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 Laravel 中的会话/cookie 刷新?

当会话 cookie 在 Laravel 中过期时重新加载站点

如何检查用户是不是通过 Laravel 上的 cookie 会话进行身份验证?

Laravel 4 cookie 会话生命周期自动更改

Laravel与Socket.io Nodejs共享会话

Laravel cookie 会话生命周期