【问题标题】:Laravel remember me is always onLaravel 记住我一直在线
【发布时间】:2015-02-15 01:36:29
【问题描述】:

我正在使用 Laravel 4.2,我想让用户决定是否要在他们的 PC 上记住他们的登录信息。所以我的登录表单如下所示:

当您勾选复选框时,帖子字段将包含'remember_me' => 'on'。表单发布到名为 sessions.store 的命名路由,其处理方式如下:

public function store()
{
    // Capture input data
    $input = Input::only('email', 'password');

    // Validate input
    $this->loginForm->validate($input);

    // Login user
    if (Auth::attempt($input, (Input::get('remember_me') == 'on')))
        return Redirect::intended('/');

    // Login error
    return Redirect::back()->withInput()->withFlashError('Invalid portal account credentials provided');
}

由于某种原因,laravel 让用户保持登录状态(即您完全关闭浏览器并重新打开它,您不必登录,您已经登录),即使他们没有勾选复选框。

知道为什么会这样吗?


更新

这是我的 sessions/create.blade.phphttp://pastebin.com/raw.php?i=MbrLgg6Y

这是我的 javascript 复选框助手http://pastebin.com/raw.php?i=R8mNrj3s

【问题讨论】:

  • 您可以发布登录表单的代码吗?
  • 在记住我的比较中可能只需要严格等于:Input::get('remember_me') === 'on'
  • @mopo922 我也试过了,没用。
  • 我已经用我的视图/js 的源更新了我的问题
  • 我没有看到您的代码有任何问题。也许问题在于您的控制器或路由。你能告诉我们你的路由和路由控制器的相关代码吗?

标签: php authentication laravel laravel-4


【解决方案1】:

你确定记得我是一个复选框吗?它看起来像是屏幕截图中提交按钮的一部分,因此无论如何您都可以触发它。

最简单的判断方法是将dd(Input::get('remember_me')) 放入您的控制器中,看看当您不勾选记住框时您是否仍然“开启”。

【讨论】:

  • 查看刀片视图源和 js 的更新问题。它是一个复选框。当我在sessions.store 方法中使用dd(Input::get('remember_me') == 'on') 时,当它被选中时我得到true,当它未被选中时我得到false。所以,这不是问题。
  • 那一定是你代码中的其他东西,也许你在其他地方也调用了 Auth::attempt,你的 store 方法没有问题。
  • 这是我唯一可以打电话给Auth::attempt()的地方。
【解决方案2】:

尝试将config/session.php 中的expire_on_close 更改为true。当您关闭浏览器时,Laravel 应该清除会话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-01
    • 2020-12-24
    • 2014-04-20
    • 1970-01-01
    • 2016-04-11
    • 2021-04-16
    • 1970-01-01
    • 2013-08-06
    相关资源
    最近更新 更多