我正在学习Laravel 5.4并自定义并制作我原来的Auth功能。
以下是我的"认证"方法
public function authenticate(Request $request)
{
$remember_me = (Input::has('remember')) ? true : false;
Auth::guard('web');
$this->validateLogin($request);
$credentials = array(
'username' => trim($request->input('username')),
'password' => trim($request->input('password'))
);
if(Auth::attempt($credentials, $remember_me)){
$user = Auth::guard('web')->user();
Auth::guard('web')->login($user, $remember_me);
return redirect()->route('mypage');
}
return redirect()->back();
}
我对$ remember_me参数中有关上述尝试和登录方法的部分提出了疑问。
他们之间有什么区别?
当我看到文档时,它说的类似于,如果你想让#34;记住我"令牌,您可以设置关于它们的第二个布尔参数。
答案 0 :(得分:6)
attempt($credentials, $remember_me)
将尝试登录用户。如果不是,则表示用户未登录。此方法返回布尔值,以便您检查是否成功。
login($user_id, $remember_me)
会将用户登录,而不会检查任何凭据。
记住我指定用户登录是否应该跨浏览器会话保持不需要重新验证。
在您的示例中,我看到您login(...)
内的来电attempt(...)
。不应该这样做。您可以删除login(...)
行。
示例:
if(Auth::attempt($credentials, $remember_me)){
return redirect()->route('mypage');
}