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

Express.js无法正确读取req.session.user对象问题排查

问题排查:角色判断因字符串空格失效

当前代码中,即便req.session.user.role的值是带末尾空格的'admin ',条件判断req.session.user.role === "admin"也无法识别为管理员角色,输出结果显示该用户被判定为非管理员。且该功能此前正常,重启Node.js服务器后出现此问题。

相关代码

const db = require('../config/db.js');
const { Request } = require('mssql');

loadForm = (req, res) => { 

    if(req.session.user.role === "admin"){
        console.log(req.sesion.user); // 拼写错误:sesion → session
        console.log(req.session.user + 'is an admin');
    } else {
        console.log(req.session.user);
        console.log(req.session.user + 'is not an admin ');
    }
}

module.exports = {
    loadForm
}

输出结果

username: 'daniel',
  password: 'letmein1',
  role: 'admin     ',
  full_name: 'Daniel Medina'
}
[object Object]is not an admin 

排查与解决建议

  • 处理字符串空格:严格相等判断===会区分带空格和不带空格的字符串,需对角色值做去空格处理,修改判断逻辑为:
    if(req.session.user.role.trim() === "admin") {
        // 原有逻辑
    }
    
  • 检查数据库数据:确认数据库中该用户的role字段值是否被意外添加了末尾空格——功能此前正常,大概率是数据层面出现了变化。
  • 清理会话缓存:重启服务器后,旧会话可能被替换,尝试清除用户浏览器的会话cookie,重新登录后查看会话中的role值是否仍带空格。
  • 修正代码拼写错误:代码中存在req.sesion.user的拼写错误(应为req.session.user),虽不直接影响角色判断,但会引发控制台报错,建议修正。
  • 检查数据库字段类型:若role字段为固定长度的CHAR类型,存储时会自动补空格,可考虑改为VARCHAR类型,或在读取数据时统一去除空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:01:13