2015-12-19 48 views
1

我想使用哈希類來哈希我的密碼。
因爲我想透過我的政策來設定密碼。
我控制器這樣的:如何使用Laravel 5.1中的哈希類登錄

public function postLogin(Request $request) 
{ 
    $rules = array(
     'username' => 'required', 
     'password' => 'required|min:8' 
    ); 
    $validator = Validator::make($request->all(), $rules); 
    if ($validator->fails()) { 
     return redirect()->back()->withErrors($validator) 
      ->withInput(); 
    } else { 
     $user=User::where('username',$request['username'])->where('group_id',1)->get()->toArray(); 
     $password=new PasswordController; 
     $request['password'] = $password->create_password_str($request['username'],$request['password']); 
     if(isset($user[0]['password'])&&Hash::check($request['password'], $user[0]['password'])){ 
      return redirect('/dashboard'); 
     } else { 
      return view('auth.login')->with('flag',5); 
     } 
    } 
} 

我用的用戶名登錄後這樣

{{Auth::user()->username}} 

告訴我錯誤

試圖讓非對象的屬性

我在重定向之前添加此代碼但不工作。

Auth::login($request['username']); 

回答

1

因爲你不使用laravel內置功能,因此它沒有用戶存儲在SESSION,它拋出一個錯誤,而你試圖獲取這實際上不存在的用戶數據。以下是如何與laravel AUTH嘗試驗證功能

if(Auth::attempt(['username' => $username, 'password' => $password])) 
{ 
    //redirect to dashboard 
} else 
{ 
    //invalid credentials 
} 

注:即使你不需要轉換你的密碼散列。 laravel足夠聰明,可以將其轉換爲哈希值。

更新:如果您想爲您的項目使用自定義鹽,您可以checkout this link

+0

我知道這一點。但嘗試類使用bcrypt,你不加入自己的鹽。我想添加我的哈希。 – paranoid

+0

@paranoid背後的任何原因,而laravel bcrypt散列已經安全.. –

+0

不,不安全。因爲你不能在這裏添加你的鹽。例如,如果黑客訪問您的數據庫,他可以創建bcrypt自己的密碼並替換管理員密碼 – paranoid