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

部署Laravel/React至Scalingo后出现Unauthenticated错误求助

解决Laravel/React部署到Scalingo后刷新页面出现"unauthenticated"的问题

1. 检查Session驱动配置

Scalingo作为PaaS平台,若使用默认的file Session驱动,多实例部署时会出现Session不共享的问题,直接导致页面切换/刷新后身份验证失效。

  • 修改.env文件,将SESSION_DRIVER设置为redis或database
  • 若选择Redis驱动,确保已安装Scalingo的Redis附加组件,且REDIS_URL配置正确
  • 执行php artisan config:cache使配置生效

2. 修正Cookie相关配置

Cookie的Domain、Secure及SameSite设置错误是常见的身份验证失效原因:

  • 设置SESSION_DOMAIN为你的Scalingo应用域名(例如yourapp.scalingo.io),不要包含http://或https://前缀
  • 将SESSION_SECURE_COOKIE设为true,Scalingo默认强制使用HTTPS
  • SESSION_SAME_SITE配置为lax(同域部署场景下),避免Cookie被浏览器拦截

3. 确保React端请求正确携带凭证

React前端需正确传递Session和CSRF Token:

  • 在Axios(或其他请求库)中开启凭证携带:
    axios.defaults.withCredentials = true;
    
  • 每次请求前从Cookie中读取最新的XSRF Token并设置请求头:
    const xsrfToken = document.cookie.match(/XSRF-TOKEN=([^;]+)/)?.[1];
    if (xsrfToken) {
      axios.defaults.headers.common['X-XSRF-TOKEN'] = decodeURIComponent(xsrfToken);
    }
    
  • 避免缓存旧的Token,确保页面刷新后重新读取Cookie中的值

4. 配置Laravel的代理信任与CSRF中间件

Scalingo的反向代理会修改请求头,需确保Laravel正确识别:

  • 在app/Http/Middleware/TrustProxies.php中设置信任所有代理:
    protected $proxies = '*';
    protected $headers = Request::HEADER_X_FORWARDED_ALL;
    
  • 检查app/Http/Middleware/VerifyCsrfToken.php的except数组,不要误将需要身份验证的路由加入排除列表

5. 排查Scalingo实例与缓存问题

  • 若部署了多个应用实例,必须使用共享型Session驱动(Redis/database),否则各实例的Session数据不互通
  • 执行scalingo restart -a yourapp重启应用,清除旧实例的缓存数据

6. 通过日志定位具体问题

利用Scalingo的日志工具查看详细错误信息:

  • 执行scalingo logs -a yourapp获取应用日志
  • 查找"unauthenticated"相关的错误记录,区分是Session未找到(驱动配置问题)还是CSRF Token不匹配(前端传递问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:01:35