Laravel - 如何停止记住用户

时间:2014-07-12 09:06:44

标签: php laravel remember-me

我是laravel的新手,并为我的应用程序添加了一个userauthentification。现在我不希望在关闭浏览器后记住经过身份验证的用户,但事实确实如此。我怎么阻止这个? remember_token是一个可以为空的varchar(100),它是使用第一次登录设置的,然后在每次用户注销时更新。

当我在auth :: attempt()中传递true作为参数时,不应该只记住用户吗?

Tyvm提前......

这是我模特的一部分:

$validation = Validator::make($input, $rules, $messages);

if ($validation->fails())
{
    $this->response['message'] = $validation->getMessageBag()->first();
}
else
{
    $this->response['message'] = $messages['user.missing'];

    if (Auth::attempt(array(
        'emailadress' => $input['emailadress'],
        'password' => $input['password'])))
    {
        $this->response['valid'] = true;
        $this->response['message'] = 'Hey '.Auth::user()->firstname.'!';
        $this->response['redirect'] = '/hello';
    }
}

return $this->response;

1 个答案:

答案 0 :(得分:0)

正如您所说,您没有在Auth :: attempt()中包含remember参数,所以确实 - 您的用户被记住。

只要会话保持活动状态,他们就会登录。浏览器在关闭时不会清空他们的cookie,除非用户特意告诉它,并且你肯定无法检测到#34;他们的浏览器从服务器端关闭,并从那一端到期。

因此,如果您希望会话更快地过期,您必须在PHP设置中选择不同的会话生命周期,或者you can do something like this在其中为其活动加时间戳并在他们闲置时将其注销一段时间。

如果您选择缩短会话生命周期,可以在php.ini

中完成
ini_set(‘session.gc_maxlifetime’,30);
ini_set(‘session.gc_probability’,1);
ini_set(‘session.gc_divisor’,1);