我使用php artisan make:auth
在我的Laravel项目中创建基本身份验证系统。
在主页上,我使用登录表单创建了Bootstrap模式,当我输入正确的详细信息时,它会正常工作,我会登录并重定向回主页。
但是如果我输入了错误的细节,页面会重新加载并且我看不出有什么问题,因为很明显错误消息是在模态窗口中,这是隐藏的,因为页面只是真实的。我必须再次打开模态以查看错误。
所以我想编辑我的LoginController(或其他),以防出现错误(表单验证失败),将我重定向到 / login URL,其中是基本登录表单(没有模态)错误。
答案 0 :(得分:1)
在LoginController
中,您可以覆盖AuthenticatesUsers
的默认方法。例如,当用户名/电子邮件和密码不匹配时,您可以覆盖处理错误的sendFailedLoginResponse()
:
/**
* Get the failed login response instance.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
protected function sendFailedLoginResponse(Request $request)
{
$errors = [$this->username() => trans('auth.failed')];
if ($request->expectsJson()) {
return response()->json($errors, 422);
}
return redirect()->to('/login')
->withInput($request->only($this->username(), 'remember'))
->withErrors($errors);
}
所以上面的代码需要在app/Http/Auth/LoginController
中。代码与默认代码相同,但会将用户重定向到/login
。
然而这不适用于表单验证错误。因此,您需要覆盖validateLogin()
方法。
答案 1 :(得分:0)
在这种情况下,我建议您使用AJAX调用Laravel的auth路由。如果登录成功,则使用Javascript重定向到主页,或在同一登录弹出窗口中显示验证错误。
在这种情况下,这是最佳和推荐的方法。
互联网上有很多帖子。只需在Laravel中搜索AJAX登录。