2017-07-26 117 views
0

我使用php artisan make:auth在我的Laravel项目中创建基本身份验证系统。Laravel Auth有条件重定向

主页上,我创建引导模式与登录表单,当我输入正确的细节,我得到登录并重定向回主页的正常工作。

但是,如果我输错的详细信息页面重新加载,我没有看到什么是错的,因为很明显的错误消息是模态窗口,这是隐藏,因为页面只是realoaded。我必须再次打开模式才能看到错误。

所以我想在错误的情况下修改我的LoginController(或其他)(表单验证失败)我重定向到/登录 URL这里是基本的登录表单(无模式),以正确地看到错误。

+0

你可以只火一个jQuery事件来打开模式,如果你通过这种方式可以避开额外的登录页面 –

+0

谢谢你得到视图页面上的任何错误,但是这是我想避免的解决方案。 – Nebster

回答

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()方法。

0

在这种情况下,我会建议你使用AJAX调用Laravel的AUTH路线。如果登录成功,则使用Javascript重定向到家庭或在相同的登录弹出窗口中显示验证错误。

这是在这种情况下最好的和推荐的方法。

在互联网上有很多帖子可用。只需在Laravel中搜索AJAX登录。