2016-07-22 88 views
0

laravel我想檢查用戶是否輸入當前密碼,而不是檢查用戶數據中存儲在數據庫中的密碼。如果正確,則繼續傳送消息密碼不正確。在Laravel中檢查密碼是否正確

我是laravel的新人,所以沒有得到確切的想法。

在此先感謝。

$('#pwd').blur(function(){ 
      var oldpwd=$('#pwd').val(); 
      var uid = $('#id').val(); 
      console.log(uid); 
      if(oldpwd != "") 
      { 
       $.ajax({ 
        url : "{{ url/profile/checkOldPwd}}", 
        data : { oldpwd:oldpwd , uid:uid }, 
        type : "POST", 
        success : function(data) { 
        if(data == 0){ 
         $("#msg-old").show(); 
         $("#msg-old").html("Password is Incorrect!"); 
         $("#pwd").val(""); 
         $("#pwd").focus(); 
        } 
        else 
        { 
        $("#msg-old").hide(); 
        $("#msg-old").html(""); 
        } 
       } 
       }); 
       } 
      }); 
+0

顯示您的代碼。 –

+0

我只是嘗試使用Ajax,但沒有得到如何檢查,所以你可以給一些想法? –

+0

查看[文檔鏈接](https://laravel.com/docs/5.2/authorization)獲取更多關於授權的信息,或向我們展示您的代碼以幫助您。 –

回答

3

正如西仁已經提到的,你可以使用默認的登記散列器作爲傳遞所使用的特定UserProvider。默認值是Illuminate\Hashing\BcryptHasher

可以使用它幾種方法:

  1. 出容器
$user = User::find($id); 
$hasher = app('hash'); 
if ($hasher->check('passwordToCheck', $user->password)) { 
    // Success 
} 
  • 使用門面
  • $user = User::find($id); 
    if (Hash::check('passwordToCheck', $user->password)) { 
        // Success 
    } 
    
    1. 出於興趣使用通用php函數password_verify也適用。然而,這是因爲它使用的默認散列算法是bcrypt。
    if (password_verify('passwordToCheck', $user->password)) { 
        // Success 
    } 
    
    0

    當用戶嘗試訪問該頁面時,將其重定向到一個授權頁面。

    執行Ajax調用,然後做你的PHP以下內容:

    public function check(Request $request) 
    { 
        if(Hash::check($request->password, $user->password)) { 
         // They match 
        } else { 
         // They don't match 
        } 
    } 
    

    我沒有帶測試,所以可能無法正常工作。

    +0

    這不起作用。Bcrypt每次返回不同的字符串,它不是'md5' –

    +0

    @ shukshin.ivan我編輯了我的答案 – Dastur

    0
    1. 用您的AJAX調用命中服務器路由。
    2. 檢查auth()->attempt($request->only('email', 'password'))
    3. 返回JSON的結果返回一個消息和HTTP狀態代碼(200,如果它是成功的,400,如果它失敗)。
    4. success()方法中的消息顯示給div。如果發生錯誤,請將error()方法中的錯誤消息顯示給div。
    +0

    你能爲我編寫一些代碼用於上述步驟嗎? –

    3

    您可以使用哈希值:檢查方法。

    使用哈希創建密碼:

    $password = Hash::make('secret'); 
    

    確認密碼:

    if (Hash::check('secret', $hashedPassword)) 
    { 
        // The passwords match... 
    } 
    
    相關問題