如果用户输入错误的电子邮件或密码重定向


Laravel 5.2 redirect if the user entered wrong Email or password

我正在使用Laravel 5.2,我正在使用默认的登录控制器。如果用户成功登录,我知道如何重定向用户,但如果他没有正确输入电子邮件或密码,我不知道如何重定向他。

这是控制器代码

class AuthController extends Controller
{

    use AuthenticatesAndRegistersUsers, ThrottlesLogins;

    protected $redirectTo = '/';

    public function __construct()
    {
        $this->middleware($this->guestMiddleware(), ['except' => 'getLogout']);
    }

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|min:6|confirmed',
        ]);
    }

    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }
}

我应该在哪里输入重定向代码?

您可以在AuthController.php中重写sendFailedLoginResponse()方法,如:

protected function sendFailedLoginResponse(Request $request)
{
    return redirect()->route('myCustomRoute')
        ->withInput($request->only($this->loginUsername(), 'remember'))
        ->withErrors([
            $this->loginUsername() => $this->getFailedLoginMessage(),
        ]);
}

@Alexey的答案修改为Laravel 5.8,将此添加到app'Http'Controllers'Auth'LoginController.php:

protected function sendFailedLoginResponse(Request $request)
{
    return redirect()
      ->route('login')
      ->withInput($request->only($this->username(), 'remember'))
      ->withErrors([
          $this->username() => [trans('auth.failed')],
      ]);
}