如何在laravel中设置remember_token NULL

时间:2014-08-04 07:22:21

标签: laravel-4

我在laravel中有一个应用程序,其中包含一个列为remember_token的Users表,而User模型具有此处提到的三个函数:http://laravel.com/docs/upgrade#upgrade-4.1.26

getRememberToken()setRememberToken($value)getRememberTokenName()

在我的登录表单中,我有电子邮件,密码和记住我复选框字段。我想要的是如果用户勾选了Remember Me复选框,那么只有laravel应该记住用户,否则它应该将列设置为NULL。

但目前它一直在记住它,而且我不知道如何将它设置为NULL。

我的doLogin功能代码如下:

public function doLogin()
{
    $rules = array(
        'email'    => 'required|email',
        'password' => 'required|alphaNum|min:7'
    );

    $validator = Validator::make(Input::all(), $rules);

    if ($validator->fails()) {
        return Redirect::to('login')
            ->withErrors($validator)
            ->withInput(Input::except('password'));
    } else {

        $remember = Input::get('remember');

        $userData = array(
            'email'     => Input::get('email'),
            'password'  => Input::get('password')
        );

        // attempt to do the login
        if (Auth::attempt($userData, true)) {
            return Redirect::to('/');
        } else {
            return Redirect::to('login')->with('loginError', 'Incorrect email or password.');
        }
    }
}

请告诉我需要进行哪些修改,以便在用户没有勾选记住复选框时将remember_token设置为数据库中的null。

1 个答案:

答案 0 :(得分:1)

引用documentation

  

如果您想提供“记住我”功能   应用程序,您可以传递true作为尝试的第二个参数   方法,它将使用户无限期地进行身份验证(或直到   他们手动注销)。

您正在将第二个参数硬编码为true,而不是使用从用户输入中获取的值。

您已经将输入设置为$ remember变量,因此请尝试传递它。

Auth::attempt($userData, $remember)