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

Laravel+Vue.js(axios)调用带auth中间件的web路由返回401 Unauthenticated问题

排查解决步骤
  • 首先检查axios是否开启了跨域携带Cookie配置
    如果你的前端访问域名和后端服务域名不一致(包括端口不同、子域不同),需要在axios配置中添加withCredentials参数,在bootstrap.js里补充如下代码:

    window.axios.defaults.withCredentials = true;
    

    该配置会让axios请求时自动携带laravel_session等身份识别Cookie,web中间件依赖该Cookie识别登录状态。

  • 核对Session配置是否匹配站点域名
    打开config/session.php检查如下配置:

    • domain参数需要和你实际访问的站点域名匹配,如果是跨子域访问需要配置为一级域名,例如主域是example.com、前端是app.example.com的情况,需要设置为.example.com
    • secure参数如果你的站点没有配置HTTPS,需要设置为false,否则Session Cookie只会在HTTPS请求下携带
    • same_site参数建议设置为lax,避免跨站请求时Cookie被拦截
  • 检查路由服务提供者的中间件配置
    打开app/Providers/RouteServiceProvider.php,确认routes/web.php对应的路由组是否默认挂载了web中间件,正常配置如下:

    Route::middleware('web')
        ->group(base_path('routes/web.php'));
    

    如果没有挂载web中间件,Session、CSRF等逻辑都不会生效,自然无法识别登录状态。

  • 验证auth守卫配置
    打开config/auth.php检查默认守卫是否为web:

    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],
    

    如果你使用了自定义守卫,需要在路由的auth中间件中指定守卫,例如auth:admin。

  • 清除路由缓存
    如果生产环境执行过路由缓存,修改路由后需要执行命令清除旧缓存:

    php artisan route:clear
    

    执行后可以用php artisan route:list查看对应路由的中间件是否正确包含auth和web组。

  • 临时关闭AuthenticateSession中间件测试
    你当前web中间件组中开启了AuthenticateSession,这个中间件会校验用户密码哈希是否和会话中存储的一致,如果登录后修改过用户密码、或者用户模型的密码字段被意外修改,就会触发401。可以先把该中间件注释掉测试是否恢复访问,如果确认是该中间件问题,登录后注意更新会话中的密码哈希即可。

  • 检查Session存储权限
    如果使用文件驱动存储Session,需要确保storage/framework/sessions目录有读写权限;如果使用Redis等驱动,需要确认驱动连接正常,没有抛出连接异常。


内容的提问来源于stack exchange,提问作者Michel Gisenäel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:15:03