不接受来自bcrypt密码的登录

问题描述 投票:1回答:3

重置密码后,我无法使用我的密码登录

public function resetPassword(Request $request){
    $info = $request->all();

    $validator = Validator::make($info, [
        'id' => 'required',
        'password' => 'required'
    ]);

    if($validator->fails()){ 

        return ['res'=>'0', 'data' => 'parameters error'];

    }else{    
        $new_password = bcrypt(request("password"));

        $user = User::find(request("id"));
        $user -> password = $new_password;
        $user -> pass_reset = 0;
        $user-> save();

        $passwordRecord = new Password_record; 
        $passwordRecord -> user_id = $user->id; 
        $passwordRecord -> password = $new_password;
        $passwordRecord -> created_at = time();
        $passwordRecord-> active_flag = 1;
        $passwordRecord->save();

        return ['res'=>'1', 'data' => $new_password];
    }
}

此密码已成功保存在数据库中。

这是我在登录功能中提到的,

public function login(Request $request)
{
    $credentials1 = $request->only('email', 'password');
    $new_password =  bcrypt($credentials1["password"]); 
    $credentials = ['username' => $credentials1["email"], 'password' => $new_password]; 

    $user = User::where('username',$credentials["username"])->where('password',$new_password)->first();
}

bcrypt,时间总是在变化,我找不到更好的方法!谁能告诉我我做错了什么?还是我需要另一种方式使此登录有效?

laravel authentication passwords bcrypt
3个回答
1
投票

您需要以这种方式制作

public function login(Request $request) {
    if (Auth::attempt ( array ('username' => $request->get ( 'username' ),'password' =>$request->get ( 'password' ) ) )) {

        return Auth::user();
               OR
        return Redirect::route('home');

    } else {
        Session::flash ( 'message', "Invalid Credentials , Please try again." );
        return Redirect::back();
    }
}

0
投票

您需要使用Hash::make()方法来加密密码:

$new_password = Hash::make($credentials1["password"]);

0
投票

您可以只使用下面的代码和整个请求。

if ($this->attemptLogin($request)) {
            return $this->sendLoginResponse($request);
        }
© www.soinside.com 2019 - 2024. All rights reserved.