我正在 sails js 上构建一个应用程序,并尝试在策略中间件中设置本地值。我无法做到这一点,请帮忙。
这不起作用
var perms = {"view":true,"add":true,"edit":false};
// My req.user comes after deserialize (working well)
req.user.perms = perms;
res.locals.user = req.user;
下面的代码在哪里工作
var perms = {"view":true,"add":true,"edit":false};
res.locals.user = req.user;
res.locals.user.perms = perms;
我正在尝试访问 Handlebars 模板中的 {{user.perms}}
我想我在第一个代码中做了一些概念上错误的事情,请帮忙。
最佳答案
我能够找到问题。
执行User.find()
后,user
在passport deserialize中被设置,因此req.user
被设置为MongoDB 文档,并且由于 User
模型没有 perms 属性,因此我无法设置该值。
答案是在发送到回调之前将 MongoDB 文档转换为纯 JSON 对象。
passport.deserializeUser(function (userSession, done) {
User.findOne({"_id":userSession._id},function(err, user){
done(err, user.toObject())
})
}
现在可以了
req.user.perms = perms;
res.locals.user = req.user;
关于javascript - 无法更新中间件策略中的 req.user?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46307380/