我在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。
答案 0 :(得分:1)
如果您想提供“记住我”功能 应用程序,您可以传递true作为尝试的第二个参数 方法,它将使用户无限期地进行身份验证(或直到 他们手动注销)。
您正在将第二个参数硬编码为true
,而不是使用从用户输入中获取的值。
您已经将输入设置为$ remember变量,因此请尝试传递它。
Auth::attempt($userData, $remember)