2017-08-19 150 views
1

我正在使用Laravel 5.4。我知道哈希是一種方法。正如我記得,我散列密碼,並將它們保存在數據庫中,當我想檢查用戶密碼時,我將散列他們輸入的密碼,並在數據庫中用散列字符串檢查它。Auth ::如何在Laravel中檢查密碼?

在laravel我只需要編寫下面的代碼:

$email = $request['email']; 
$pass = $request['password']; 

if(Auth::attempt(['email'=> $email , 'password' => $pass])){ 
     //return something 
    } 

沒有必要bcrypt($request['password']);

eventhough每當我必須使用bcrypt散列字符串會有所不同。

如何Auth::attempt散列密碼與bcrypt檢查密碼。


我需要一個解釋,即如何Auth::attempt作品同時使用bcrypt。我知道如何執行代碼並檢查密碼。

+0

使用bcrypt不是檢查確切的字符串,而是通過格式不能解密的挑戰 – C2486

+0

Ex。如果它給出相同的字符串,我們可以猜出其他的密碼 – C2486

+0

它們已經在'Auth :: attempt'函數中建立了!所以只需檢查該功能 –

回答

0

如果您使用Laravel應用程序中包含的內置LoginControllerRegisterController類,它們將自動使用Bcrypt進行註冊和身份驗證。

欲瞭解更多詳細信息,您可以參考以下鏈接:https://laravel.com/docs/5.4/hashing

通過Laravel使用的哈希方法生成每次(即使是相同的字符串)不同的散列。它不會散列字符串和比較它們,而不是它使用未經哈希的字符串與哈希進行比較。

該檢查方法允許您驗證給定的純文本字符串是否與給定的哈希對應。但是,如果你使用的LoginController附帶Laravel,你可能並不需要直接使用這個,因爲這個控制器會自動調用這個方法:

if (Hash::check('plain-text', $hashedPassword)) { 
    // The passwords match... 
} 
+0

我知道我可以使用bcrypt。我知道他們也使用bcrypt。我只想知道他們如何檢查散列字符串,而每個具有相同輸入的bcrypt函數的結果將會不同 – AMH

+0

它不會與散列字符串比較它與簡單密碼比較散列字符串像這樣if(Hash :: check('純文本',$ hashedPassword)){} –

+0

希望這可以幫助你理解。讓我知道如果你有任何問題! –

1

有一個稱爲password_verify()一個PHP函數。 Laravel也使用相同的函數來比較密碼和散列。

+1

我會避免使用像「快樂星期五」等的禮物......他們混亂了帖子。 – FrankerZ