2017-06-16 492 views
3

我正在学习Laravel 5.4并自定义和创建我的原始Auth功能。Auth中的“login”和“attempt”方法有什么区别

以下是我的“验证”方法。

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参数部分关于上面提到的尝试和登录方法的问题。

他们有什么区别?

当我看到文档时,它说类似于,如果你想让“记住我”标记,你可以设置关于它们的第二个布尔参数。

回答

5

attempt($credentials, $remember_me)如果登录凭证正确,将尝试登录用户。如果他们不是,那么用户没有登录。这个方法返回一个布尔值,所以你可以检查成功。

login($user_id, $remember_me)将登录用户,而不检查任何凭证。

记住我指定用户登录是否应该在浏览器会话中保留而不需要重新验证。

在您的示例中,我看到您在attempt(...)内调用login(...)。这不应该需要。您可以删除login(...)行。

例子:

if(Auth::attempt($credentials, $remember_me)){ 
    return redirect()->route('mypage'); 
} 
+0

感谢您用一个例子回答。 我了解两者之间的差异。 在您的评论中,“这应该是需要的。”。这是“这不应该需要。”不是吗? 无论如何,非常感谢你! –

+0

对不起,我不了解您的评论“这应该是需要的”。 但我现在明白了。 谢谢! –

+0

固定错字。意思是不应该的。 – Jono20201

相关问题