首页 > 解决方案 > 我该如何解决这个错误:这些凭据与我们的记录不匹配

问题描述

今天我想使用我的 laravel 项目,但是当我想登录时,突然在我的所有项目中都收到了这个错误

这些凭据与我们的记录不符。

我什么都没做,但突然间我的所有项目都向我显示了这个错误

我测试了一些方法,例如:bycript 和 Hasht,但它们对我不起作用

我的登录控制器

{

use AuthenticatesUsers;


protected $redirectTo = '/';


public function __construct()
{
    $this->middleware('guest')->except('logout');
}


protected function credentials(Request $request)
{
    return ['email'=>$request->{$this->username()},'password'=>$request->password,'verified'=>'1'];
}

public function redirectToProvider()
{
    return Socialite::driver('google')->redirect();
}

/**
 * Obtain the user information from GitHub.
 *
 * @return \Illuminate\Http\Response
 */
public function handleProviderCallback()
{
    $google_user = Socialite::driver('google')->user();


    $user=user::whereemail($google_user->getemail())->first();
    if (!$user){
        $user=user::create([
           'name'=>$google_user->getname(),
            'email'=>$google_user->getemail(),
            'password'=>bcrypt($google_user->getId()),
        ]);

        auth()->loginUsingId($user->id);


            return redirect('/home');


    }




}

}

特征 AuthenticatesUsers {

public function showLoginForm()
{
    return view('auth.login');
}


public function login(Request $request)
{
    $this->validateLogin($request);


    if (method_exists($this, 'hasTooManyLoginAttempts') &&
        $this->hasTooManyLoginAttempts($request)) {
        $this->fireLockoutEvent($request);

        return $this->sendLockoutResponse($request);
    }

    if ($this->attemptLogin($request)) {
        return $this->sendLoginResponse($request);
    }


    $this->incrementLoginAttempts($request);

    return $this->sendFailedLoginResponse($request);
}


protected function validateLogin(Request $request)
{
    $request->validate([
        $this->username() => 'required|string',
        'password' => 'required|string',
    ]);
}


protected function attemptLogin(Request $request)
{
    return $this->guard()->attempt(
        $this->credentials($request), $request->filled('remember')
    );
}


protected function credentials(Request $request)
{
    return $request->only($this->username(), 'password');
}


protected function sendLoginResponse(Request $request)
{
    $request->session()->regenerate();

    $this->clearLoginAttempts($request);

    return $this->authenticated($request, $this->guard()->user())
            ?: redirect()->intended($this->redirectPath());
}


protected function authenticated(Request $request, $user)
{
    //
}


protected function sendFailedLoginResponse(Request $request)
{
    throw ValidationException::withMessages([
        $this->username() => [trans('auth.failed')],
    ]);
}


public function username()
{
    return 'email';
}


public function logout(Request $request)
{
    $this->guard()->logout();

    $request->session()->invalidate();

    return $this->loggedOut($request) ?: redirect('/');
}


protected function loggedOut(Request $request)
{
    //
}


protected function guard()
{
    return Auth::guard();
}

}

标签: authenticationlaravel-5

解决方案


我在你的代码中发现了一些东西,可能你的代码是完美的,但你能检查一下吗

$google_user = Socialite::driver('google')->user();

$user=user::whereemail($google_user->getemail())->first();
if (!$user){
    $user=user::create([
       'name'=>$google_user->getname(),
        'email'=>$google_user->getemail(),
        'password'=>bcrypt($google_user->getId()),
    ]);

    auth()->loginUsingId($user->id); // comment this line and try with this
    Auth::login($user); // make sure you have import Auth

    return redirect('/home');
}

推荐阅读