【问题标题】:Laravel - how to stop remembering usersLaravel - 如何停止记住用户
【发布时间】:2014-09-02 21:16:03
【问题描述】:

我是 laravel 的新手,并在我的应用程序中添加了用户身份验证。现在我不希望在关闭浏览器后记住经过身份验证的用户,但实际上是这样。我该如何阻止这个? 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;

【问题讨论】:

  • 即使您不使用记忆功能,remember_token 也会更新,这并不意味着关闭浏览器后会记住用户。你测试了吗?
  • 是的,remember_token 总是在注销时更新。但我的用户在关闭并重新打开浏览器后总是会被记住,除非我在 'config/session.php' 中将 'expire_on_close' 设置为 false。这不应该,对吧?
  • 据我所知这是不应该的(尽管我停用了 remember_token)。这可能是像stackoverflow.com/q/23916096/575765 这样的缓存问题吗?

标签: php laravel remember-me


【解决方案1】:

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

只要他们的会话保持活跃,他们就会一直登录。浏览器不会在关闭时清空其 cookie,除非用户明确告诉它这样做,而且您当然无法“检测”他们的浏览器从服务器端关闭并从该端终止他们的会话。

因此,如果您希望会话更快地过期,则必须在 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 2018-08-27
    • 2012-04-09
    • 2018-01-29
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多