Laravel Auth条件重定向

时间:2017-07-26 13:28:56

标签: laravel laravel-5

我使用php artisan make:auth在我的Laravel项目中创建基本身份验证系统。

在主页上,我使用登录表单创建了Bootstrap模式,当我输入正确的详细信息时,它会正常工作,我会登录并重定向回主页。

但是如果我输入了错误的细节,页面会重新加载并且我看不出有什么问题,因为很明显错误消息是在模态窗口中,这是隐藏的,因为页面只是真实的。我必须再次打开模态以查看错误。

所以我想编辑我的LoginController(或其他),以防出现错误(表单验证失败),将我重定向到 / login URL,其中是基本登录表单(没有模态)错误。

2 个答案:

答案 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登录。