如何使用Laravel 5.1中的哈希类登录

时间:2015-12-19 14:01:45

标签: php authentication laravel-5.1

我想使用哈希类来哈希我的密码 因为我希望在我的政策中使用slat密码 我有这样的控制器:

 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 个答案:

答案 0 :(得分:1)

因为你没有使用laravel builtin函数所以它没有将用户存储在SESSION中,并且当你试图获取实际上不存在的用户数据时它会引发错误。以下是如何使用laravel auth尝试功能进行身份验证

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

注意:即使您不需要将密码转换为哈希值。 laravel非常聪明,可以将其转换为哈希值。

更新:如果您想为项目使用自定义盐,可以checkout this link