为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
子衿沉夜 2021-10-22 12:55:28
我的欢迎页面上有一个登录表单,它发布到登录路径如果有错误,我希望它们显示在登录页面上,而不是返回欢迎页面。问题是,如果有错误,它会返回到欢迎页面。我查看了代码,看起来back()是为此负责,所以我将范围缩小到 session previousUrl。我试过session()->setPreviousUrl(route('login'))在我的欢迎页面控制器中使用,但没有解决问题。即使用户尝试从欢迎页面登录,我该如何制作它才能在登录页面上显示错误?编辑:这是一个 Laravel 应用程序,它使用内置的身份验证脚手架进行登录。
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

我是这样想出来的(非常相似):


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因为只返回重定向什么都不做。


查看完整回答
反对 回复 2021-10-22
?
largeQ

TA贡献2039条经验 获得超7个赞

您可以通过覆盖控制器上的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'));

}


查看完整回答
反对 回复 2021-10-22
  • 2 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信