node.js - PassportJS req.user 发送所有用户数据

标签 node.js servlets express passport.js

我正在使用 PassportJS 本地策略进行用户身份验证,它的工作完全正常。 但是,当我尝试在任何经过​​身份验证的页面上使用 console.log(req.user) 时,我会获得当前登录用户的所有数据库条目详细信息。这是正常的吗? 包括哈希密码

{ 
    name: 'Test',
    email: 'vxxxxx@gmail.com',
    password: '$2a$10$aw2aMtXtrmKHi.kd97c0NeMOu6Y0hlcM4xk2VuqfneLYdEkc676eq',
    phone: 9xxxxx6,
    _enabled: true,
    _id: 5253f326003e55f028000001,
    __v: 0 
}

我的本​​地策略是这样定义的。

passport.use(new strategy(function(username, password, done) {
 User.findOne({ "email": username }, function(err, user) {
  if (err) { return done(err); }
  if (!user) { return done(null, false, { message: 'Unknown user ' + username }); }
  if(user._enabled==false) return done(null,false,{message: "Dear "+user.name+", Please verify your email first!"});
  if(bcrypt.compareSync(password,user.password)){
    return done(null, user);
    app.set("userEmail",username);
    } 
   else {
    return done(null, false, { message: 'Invalid password' });
    }
 db.close();
})
}));

这些数据是否有可能被篡改?

最佳答案

是的,它可以被篡改。使用 deserializeUser 加载绑定(bind)到 req 对象的用户。

请参阅:http://passportjs.org/guide/configure/和“ session ”部分。

关于node.js - PassportJS req.user 发送所有用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19248431/

相关文章:

java - 如何将 HTML 表单提交重定向到 iframe?

javascript - 无法在 Javascript 中调用函数

javascript - Windows 上 package.json 中位于外部的 'npm run' 脚本?

javascript - Express服务器响应是一个流,如何使其成为字符串/json

java - MessageBodyReaders 如何使用

java - 在 JSP 的同一页面中从 Servlet 向 BootStrap Modal 发送数据(对象)

javascript - memcached.get() 返回结果?

javascript - 在获取用户时使用 Passport-jwt 时未定义 req.user

node.js - 在终端中停止 Gulp 时如何关闭 BrowserSync 的旧实例?

javascript - react和express中如何一次性上传文件和json数据