我正在学习 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 参数中关于上述尝试和登录方法的部分有疑问。
它们之间有什么区别?
当我看到文档时,它说类似于,如果你想制作“记住我”标记,你可以设置关于它们的第二个 bool 参数。
最佳答案
如果登录凭据正确,attempt($credentials, $remember_me)
将尝试登录用户。如果不是,则用户未登录。此方法返回一个 bool 值,以便您可以检查是否成功。login($user_id, $remember_me)
将用户登录,而不检查任何凭据。
记住我指定用户登录是否应该在浏览器 session 中持续存在而无需重新验证。
在您的示例中,我看到您在 login(...)
中调用了 attempt(...)
。这不应该被需要。您可以删除 login(...)
行。
例子:
if(Auth::attempt($credentials, $remember_me)){
return redirect()->route('mypage');
}
关于laravel - Auth中 "login"和 "attempt"方法有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44584335/