2017-06-16 28 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

相關問題