DRF+Firebase+react-admin应用登录后返回401未授权问题求助
DRF + react-admin + Firebase 认证401秒退问题排查方案
后端DRF侧排查点
- 校验Firebase ID Token的逻辑是否符合官方要求:必须使用Firebase Admin SDK的
verify_id_token()方法完成校验,禁止自行解析JWT。重点检查是否校验了exp(过期时间)、aud(受众)、iss(签发者)三个核心字段,任一字段校验不通过都会直接返回401。 - 检查本地用户关联逻辑:校验token拿到uid后,是否正确关联了Django本地的用户表,关联的用户是否存在、是否激活、是否具备接口访问权限。
- 检查认证类配置:确认接口的认证类是否正确读取
Authorization: Bearer <token>请求头,有没有出现请求头字段名写错、Bearer大小写错误、空格缺失的问题。
前端react-admin侧排查点
- 检查
authProvider的checkAuth方法逻辑:react-admin会在路由切换、接口请求前自动调用该方法校验会话,确认该方法是否只校验了uid存在,遗漏了token有效性校验;或者本地存储的token被意外清空导致校验不通过触发登出。 - 检查请求拦截器逻辑:确认所有发往后端的请求都正确携带了Firebase返回的最新ID Token。Firebase ID Token默认有效期仅1小时,若未配置
onIdTokenChanged监听实现token自动刷新,token过期后所有请求都会返回401。
快速验证手段
- 将登录后拿到的ID Token复制到本地解析,查看
exp字段对应的时间是否正确,若刚生成的token就已过期,大概率是本地设备时间和服务器时间偏差过大导致。 - 在DRF的认证逻辑中添加全链路日志,打印前端传入的token、校验过程的报错信息、权限判断结果,可直接定位是校验失败还是权限逻辑错误。
内容的提问来源于stack exchange,提问作者MomchilovP
相关产品推荐
相关产品推荐

