You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel认证中间件故障 已登录用户仍被重定向到登录页

问题原因

两个认证中间件的判断逻辑完全写反,加上路由文件存在语法笔误,才会出现已登录用户被重定向回登录页的问题,具体问题点:

  • isLoggedIn(对应AuthCheck中间件)逻辑反向:现有代码判断「存在登录Session就跳转登录页」,和「未登录用户才拦截跳转登录页」的需求完全相悖
  • alreadyLoggedIn中间件逻辑反向:现有代码判断「已登录访问登录/注册页才放行,其余情况返回上一页」,和「已登录用户访问登录/注册页直接跳转仪表盘,未登录才放行」的需求完全相悖
  • 路由定义笔误:/sign_up路由调用中间件时漏写-符号,存在语法错误

修复方案

1. 修正AuthCheck中间件逻辑

把原有判断条件取反,仅当用户不存在有效登录Session时才拦截跳转,修正后代码:

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
class AuthCheck
{
    public function handle(Request $request, Closure $next)
    {
        // 无有效登录凭证时拦截
        if(!Session::has('loginId')){
            return redirect('signin')->with('fail','You have to login first');
        }
        return $next($request);
    }
}

2. 修正AlreadyLoggedIn中间件逻辑

调整分支判断,已登录用户访问登录、注册页时直接跳转客户端仪表盘,未登录用户正常放行访问公共页面,修正后代码:

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;

class AlreadyLoggedIn
{
    public function handle(Request $request, Closure $next)
    {
        // 已登录状态访问登录/注册页,直接跳仪表盘
        if(Session()->has('loginId') && (url('signin') == $request->url() || url('sign_up') == $request->url())){
            return redirect('/client');
        }
        // 未登录正常放行
        return $next($request);
    }
}

3. 修复路由语法错误

找到web.php中/sign_up的路由定义,补上缺失的-符号,修正后对应路由段:

Route::post('/signin', [customAuthController::class,'loginClient']);
Route::get('/client',[customAuthController::class,'dashboard'])->middleware('isLoggedIn');
Route::get('/signin', [customAuthController::class, 'login'])->middleware('alreadyLoggedIn');
// 原代码此处漏写横杠,修正为 ->middleware
Route::get('/sign_up',[customAuthController::class,'registration'])->middleware('alreadyLoggedIn');

校验点

修复完成后确认登录方法loginClient中,账号密码校验通过时执行了两个操作:

  1. 调用Session::put('loginId', $登录用户的主键id)存入有效登录凭证
  2. 校验通过后执行return redirect('/client')跳转至仪表盘页

内容的提问来源于stack exchange,提问作者Faaiz Aslam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.04 13:09:39