即使尝试在不同页面上登录,也会在登录页面上显示错误

我的欢迎页面上有一个登录表单,它发布到登录路径

如果有错误,我希望它们显示在登录页面上,而不是返回欢迎页面。问题是,如果有错误,它会返回到欢迎页面。

我查看了代码,看起来back()是为此负责,所以我将范围缩小到 session previousUrl。我试过session()->setPreviousUrl(route('login'))在我的欢迎页面控制器中使用,但没有解决问题。

即使用户尝试从欢迎页面登录,我该如何制作它才能在登录页面上显示错误?

编辑:这是一个 Laravel 应用程序,它使用内置的身份验证脚手架进行登录。


子衿沉夜
浏览 81回答 2
2回答

米脂

我是这样想出来的(非常相似):protected function validateLogin(Request $request){    $validator = Validator::make($request->all(), [        $this->username() => 'required|string',        'password' => 'required|string',    ]);    if ($validator->fails()) {        throw (new ValidationException($validator))->redirectTo(route('login'));    }}protected function sendFailedLoginResponse(Request $request){    throw ValidationException::withMessages([        $this->username() => [trans('auth.failed')],    ])->redirectTo(route('login'));}需要抛出异常,validateLogin因为只返回重定向什么都不做。

largeQ

您可以通过覆盖控制器上的validateLogin和sendFailedLoginResponse功能来解决此问题。protected function validateLogin(Request $request){    $validator = Validator::make($request->all(), [        $this->username() => 'required|string',        'password' => 'required|string',    ]);    if ($validator->fails()) {        return redirect('login')            ->withErrors($validator)            ->withInput();    }}protected function sendFailedLoginResponse(Request $request){    throw new ValidationException::withMessages([        $this->username() => [trans('auth.failed')],    ])->redirectTo(route('login'));}
打开App,查看更多内容
随时随地看视频慕课网APP