Laravel 认证失败时如何设置重定向到 login.blade.php 登录页面
实现方案
完全可以实现,只需修改登录验证失败后的重定向规则即可,具体操作如下:
- 如果你使用的是Laravel自带的认证系统,直接修改
app/Http/Controllers/Auth/LoginController.php,重写默认的登录失败响应方法:
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Http\Request; use Illuminate\Validation\ValidationException; // 需导入该类 class LoginController extends Controller { use AuthenticatesUsers; protected $redirectTo = '/home'; public function __construct() { $this->middleware('guest')->except('logout'); } // 新增以下重写方法 protected function sendFailedLoginResponse(Request $request) { throw ValidationException::withMessages([ $this->username() => [trans('auth.failed')], // 如果有其他自定义验证错误也可以在这里追加 ])->redirectTo(route('login')) // 固定重定向到登录页路由 ->withInput($request->only($this->username(), 'remember')); // 可选:保留用户已输入的账号、记住我选项 } }
备注:如果你的登录路由没有设置name为
login,请将上述代码中的route('login')替换为你实际的登录页地址,比如url('/login')。
- 如果你是自定义编写的登录验证逻辑,只需将验证失败后的返回逻辑从
back()改为跳转登录页即可,示例如下:
// 验证失败后不要用back() // return back()->withErrors($validator)->withInput(); // 替换为 return redirect()->route('login')->withErrors($validator)->withInput();
- 你已经在login.blade.php中编写的错误展示代码无需修改,只要登录路由对应的页面渲染这段代码,所有重定向过来的验证错误都会正常显示。
修改完成后测试:从头部登录表单输入错误的账号密码,就会自动跳转到专门的登录页并展示对应的错误提示。
内容的提问来源于stack exchange,提问作者Hasan ABLAK
相关产品推荐
相关产品推荐

