如果用户输入了错误的电子邮件或密码,则Laravel 5.2重定向

时间:2016-08-31 10:00:26

标签: php laravel laravel-5.2

我正在使用 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']),
        ]);
    }
}

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

2 个答案:

答案 0 :(得分:2)

您可以在sendFailedLoginResponse()中覆盖AuthController.php方法,例如:

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

答案 1 :(得分:0)

@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')],
      ]);
}