Laravel 10问题:忘记密码链接跳转后回到登录表单
Laravel 10 密码重置表单短暂显示后跳转回登录页的解决办法
以下是针对该问题的排查和解决步骤:
1. 检查控制器中间件配置
确认ForgotPasswordController的中间件设置正确,默认应仅允许未登录用户访问:
// app/Http/Controllers/Auth/ForgotPasswordController.php protected function middleware() { return ['guest']; }
同时执行命令查看路由绑定的中间件:
php artisan route:list --name=password.request
确保该路由的中间件包含guest,而非auth或其他限制已登录用户的中间件。
2. 排查会话与CSRF问题
- 清除应用缓存和会话:
php artisan cache:clear php artisan session:clear - 清除浏览器的缓存和Cookie,避免旧会话干扰。
- 检查密码重置表单视图(
resources/views/auth/passwords/email.blade.php),确保表单内包含@csrf指令,CSRF令牌生成正常。
3. 检查重定向中间件逻辑
查看RedirectIfAuthenticated中间件,确认未登录用户不会被错误重定向:
// app/Http/Middleware/RedirectIfAuthenticated.php public function handle(Request $request, Closure $next, ...$guards) { $guards = empty($guards) ? [null] : $guards; foreach ($guards as $guard) { if (Auth::guard($guard)->check()) { return redirect(RouteServiceProvider::HOME); } } return $next($request); }
如果存在自定义逻辑导致未登录用户被重定向,需调整该中间件的判断逻辑。
4. 排查视图与前端问题
- 打开浏览器开发者工具,点击“忘记密码”链接后,查看网络请求面板:
- 确认
password/reset的请求状态码,若为302,查看重定向目标,定位重发起源。
- 确认
- 检查密码重置视图内是否存在错误的JavaScript代码(如自动提交、强制重定向脚本),移除异常代码。
5. 验证认证配置
检查config/auth.php的默认守卫配置,确保使用的web守卫会话驱动正常:
// config/auth.php 'defaults' => [ 'guard' => 'web', 'passwords' => 'users', ], 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], ],
同时确认ForgotPasswordController指定了正确的认证守卫:
// app/Http/Controllers/Auth/ForgotPasswordController.php protected function guard() { return Auth::guard('web'); }
内容的提问来源于stack exchange,提问作者user761100
相关产品推荐
相关产品推荐

