Laravel只能登录隐身标签

时间:2016-10-08 12:44:36

标签: php laravel authentication

我的Laravel项目有一个奇怪的问题。无法在第一次查看时发现 - 我只能在隐身标签中登录/退出打开应用。在正常的标签页中,当我已经登录并且删除了我无法登录的存储空间中的会话信息后,它不会让我退出。

我之前在env中设置了一个SESSION_DOMAIN,因为我还有另外一个问题,就是无法在www。*子域名上使用Laravel Socialite登录,但后来删除了SESSION_DOMAIN属性,因为它没有解决问题。

更新

似乎问题已经发生,因为我在.env文件中设置了SESSION_DOMAIN。当我在登录本地环境时执行此操作时,即使我处于隐身标签中,也会出现问题。虽然我可以删除然后再次重新加载隐身页面,但隐身标签的问题会消失。

3 个答案:

答案 0 :(得分:2)

我没有使用Laravel,因此可能无法完全理解SESSION_DOMAIN应该如何在那里工作,但问题似乎是由于在较高域上设置了cookie。

例如,您的代码正在使用域'sales.domain.com'。当您在Laravel中创建会话时,它会放置一个在该域上有效的cookie。然后可以使用相同的“设置cookie”请求删除它,但过去使用日期。这就是它通常的工作方式。

但是,如果有人(可能是您的代码)前一段时间也设置了一个名称相同的cookie,但在所有子域名或“.domain.com”上有效,则无法通过删除的“set cookie”请求删除来自'sales.domain.com'。

要检查此项,请在向“sales.domain.com”和“domain.com”发出请求时使用Firebug或Chrome开发工具查看请求标头。请注意“Cookie”标题。如果两个请求都存在相同的cookie,这证实了我的猜测。您可以通过在浏览器中清除cookie来解决此问题。

另见https://en.wikipedia.org/wiki/HTTP_cookie#Domain_and_Path

答案 1 :(得分:0)

也许您遇到了子域Cookie名称的问题。如果子域使用相同的Laravel框架。尝试将config / session.php中的会话Cookie名称更改为主域和子域之间的唯一名称。

答案 2 :(得分:-1)

我在尝试登录我的公用事业提供商以在线支付账单时遇到了同样的问题。我尝试了从清除 cookie 到缓存的所有建议,以及其他一些不适用或简单不起作用的建议。直到我开始在设置中尝试不同的选项时,我才发现我的解决方案。我认为删除 cookie 是解决方法,直到我刷新页面和/或注销并尝试再次登录,我收到了标题为“无法找到指定的 URL”的空白页面,并且再次仅在我进入隐身模式时才有效模式。

为我完全解决此问题的解决方案是进入设置并关闭“请勿跟踪”。我希望这对至少一个人有帮助。 谢谢