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

Laravel Backpack登录后,Sanctum保护VueJS应用遇401问题解决

Laravel Sanctum 配合 Backpack 登录后 /api/user 返回401的解决方法

问题场景

项目采用Laravel Backpack(默认Bootstrap+jQuery),可通过默认登录表单正常登录。尝试借助Laravel Sanctum,利用Backpack的登录数据保护VueJS应用,已完成.env、Backpack配置、Kernel中间件、Axios、路由的相关设置,但/sanctum/csrf-cookie请求成功获取CSRF-TOKEN头后,/api/user接口始终返回401未授权。

解决步骤

1. 对齐Sanctum与Web守卫的用户提供者

打开config/auth.php,确保sanctum守卫的用户提供者与Backpack使用的web守卫一致,这样Sanctum才能识别Backpack的登录会话:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'sanctum' => [
        'driver' => 'sanctum',
        'provider' => 'users', // 必须和web守卫的provider保持一致
    ],
]

2. 修正SESSION_DOMAIN与SANCTUM_STATEFUL_DOMAINS配置

  • 带端口的本地环境下,SESSION_DOMAIN需设为.localhost(前缀加.),确保跨端口共享Cookie:
    SESSION_DOMAIN=.localhost
    
  • 如果VueJS应用使用独立端口(如3000),需将其添加到SANCTUM_STATEFUL_DOMAINS:
    SANCTUM_STATEFUL_DOMAINS=localhost,127.0.0.1:8000,127.0.0.1:3000
    

3. 确保Axios正确携带CSRF令牌

虽然开启了withCredentials,但部分场景下需手动从Cookie中提取XSRF-TOKEN并添加到请求头,修改app.js:

axios.defaults.withCredentials = true;

// 从Cookie中获取XSRF-TOKEN
function getCookie(name) {
    let value = "; " + document.cookie;
    let parts = value.split("; " + name + "=");
    if (parts.length === 2) return parts.pop().split(";").shift();
}

axios.get('/sanctum/csrf-cookie').then(() => {
    axios.get('/api/user', {
        headers: {
            'X-XSRF-TOKEN': getCookie('XSRF-TOKEN')
        }
    }).then(response => {
        console.log(response.data);
    });
});

4. 清除缓存与浏览器Cookie

  • 执行Laravel缓存清理命令:
    php artisan config:clear
    php artisan cache:clear
    
  • 清空浏览器所有Cookie,重新登录Backpack后台后再测试/api/user接口。

5. 检查CORS配置

打开config/cors.php,确保允许携带凭证并包含前端域名:

'supports_credentials' => true,
'allowed_origins' => ['http://localhost:3000', 'http://localhost:8000'], // 根据实际域名调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:33:24