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

Node.js Fake API无法在Access Token中添加Role属性求助

解决JWT Token中不包含role字段的问题

核心问题是生成Token时未将用户的role字段加入JWT的payload中,只需修改server.js里生成Token的代码即可解决:

  1. 找到生成JWT的代码段
    找到使用jsonwebtoken库sign方法生成Token的部分,通常类似这样:

    const jwt = require('jsonwebtoken');
    // ... 其他代码
    const token = jwt.sign(
      { email: user.email, password: user.password },
      'your-secret-key', // 或环境变量中的密钥
      { expiresIn: '1h' }
    );
    
  2. 在payload中添加role字段
    在sign方法的第一个参数(payload对象)里加入用户的role属性:

    const token = jwt.sign(
      { 
        email: user.email, 
        password: user.password,
        role: user.role // 新增此行,将用户角色写入Token
      },
      'your-secret-key',
      { expiresIn: '1h' }
    );
    
  3. 验证用户数据读取是否正确
    确保从users.json读取用户时,正确获取到了role字段:

    const users = require('./users.json');
    const user = users.find(u => u.email === req.body.email && u.password === req.body.password);
    // 可临时打印user对象,确认role存在:console.log(user);
    

额外排查点

  • 检查users.json中的role字段拼写是否正确(注意大小写,比如不要写成Role)
  • 确认生成Token时使用的user对象未被其他代码过滤掉role属性
  • 解码Token时使用jwt.verify(token, secret)方法,而非直接查看编码后的字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:14:55