【发布时间】:2014-08-10 14:58:24
【问题描述】:
我使用我的 Laravel 作为 OAuth2 客户端,我需要保留令牌 i cookie。因此,我将驱动程序设置为 cookie 并保持生命周期 120 的默认值
当任何用户在登录时检查记住我时,我尝试使用代码更改生命周期:
$lifetime = time() + 60 * 60 * 24 * 365;// one year
Config::set('session.lifetime', $lifetime);
但没有成功。在任何其他控制器中,我检查了生命周期的值以及每次获得默认值时的值。
\Log::info(\Config::get('session.lifetime'));
编辑#1:
够了吗?
if(Input::has('rememberMe')) {
$lifetime = time() + 60 * 60 * 24 * 365; // one year
Session::put('Expires', $lifetime);
}
编辑#2:
我把 access_token 键放在和上面例子中的 Expires 一样,比如:
public function signin() {
/**
* Code for getting *client_code* and *client_state* from API server
*/
$access_token = $this->provider->getAccessToken('authorization_code', $form_data);
// $access_token is object and contain all data (access_token, refresh_token, expires)
Session::put('access_token', $access_token);
Session::put('refresh_token', $access_token->refreshToken);
Session::put('token_expires', $access_token->expires);
if(Input::has('rememberMe')) {
$lifetime = time() + 60 * 60 * 24 * 365; // one year
Session::put('expires', $lifetime);
}
return Response....
}
这是“默认”的 Laravel 会话(我在 /app/config/session.php 中将驱动程序从 file 更改为 cookie)。我知道应该在 /app/config/session.php 文件中设置生命周期,但正如您所见,我需要更长的生命周期来记住我选项
【问题讨论】:
-
你能显示你在cookie中设置令牌的代码吗?您只能在设置时更改 cookie 的过期时间,并且是每个 cookie 的值。
-
如果您想要“记住我”功能,最好使用 Sentry。 cartalyst.com/manual/sentry
-
不,这是没有数据库的客户端;)
标签: session cookies laravel lifetime