Laravel Auth :: login()在会话中更改域后不会持久存在

时间:2015-10-21 13:37:18

标签: php session laravel cookies laravel-5

之前我在session.php中更改了domian,我的Auth :: login()工作正常,它会保留cookie,所以他们不需要再次登录。当我的一些朋友告诉我,当他们点击登录(来自Facebook)时,它会以某种方式返回AbstractProvider.php中的InvalidStateException。

我谷歌周围知道可能存在一些由cookie导致的问题,解决方案是将session.php中的域从null更改为我的域(例如myapps.com)。

在我更改为myapps.com后,不再出现invalidstateException,但它不会持续登录。经过6-12个小时,它需要我再次登录。

以下是我的代码(我相信我的代码在我更改会话之后是正确的,并且登录将不再存在)。

$UserLogin = User::where('facebook_id', '=', $user->getId())->first();
Auth::login($UserLogin, true);

2 个答案:

答案 0 :(得分:4)

核心问题是,您的浏览器会将来自多个域的两个Cookie 存储为名为laravel_session的相同Cookie名称;当您发出请求时,两个具有相同名称的cookie都将发送到服务器。

config/session.php

//change this
'cookie' => 'laravel_session'

//and this
'domain' => 'my_domain'

通过更改cookiedomain的名称,您可以通过以新名称存储新Cookie来解决问题。

答案 1 :(得分:0)

这是因为浏览器中存储的旧 cookie 会干扰您设置的新域。

为了让您的登录再次工作,在配置文件中设置域后清除浏览器 cookie

相关问题