我是express.js的新手。我遇到了仅由管理员添加用户的问题。如果管理员退出,也不应该添加用户。这是我的代码,任何人都可以帮助我。我使用 express.js, mongodb
。
是服务器端代码
route.js
app.route('/auth/signin').post(users.signin);
app.route('/auth/adduser').post(users.in,users.adduser);
express.js
这是我的 signin
代码
exports.signin = function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err || !user) {
res.status(400).send(info);
} else {
// Remove sensitive data before login
user.password = undefined;
user.salt = undefined;
req.login(user, function(err) {
if (err) {
res.status(400).send(err);
} else {
req.session.value = user;
res.jsonp(user);
}
});
}
})(req, res, next);
};
这是 adduser
代码
exports.in=function(req,res,next){
var user=req.session.value;
console.log('user details get from signin page'+JSON.stringify(user));
if(user.username===config.admin.username){
next(); //it goes to add user page
}
else{
res.send('your not a Admin');
}
};
exports.adduser = function(req, res) {
delete req.body.roles;
var user = new User(req.body);
var message = null;
// Add missing user fields
user.provider = 'local';
user.displayName = user.firstName + ' ' + user.lastName;
user.save(function(err) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(user);
console.log('user added');
}
});
};
但是,在对代码进行排除时, req.session.value is undefined
错误
即..,数据不是来自登录页面。
发布此代码的主要目的是管理员只需在登录时添加用户。否则应发送消息,例如您不是管理员或请登录....
答案 0 :(得分:0)
实际上,护照使用req
方法在logIn()
对象上设置用户,因此您不需要此行
req.session.value = user; // remove this
你可以让用户
console.log(req.user);
验证
在server.js或app.js
中添加此中间件app.use(function(req, res, next) {
console.log(req.user);
next();
});
在登录发生后,调用验证加logIn()
方法,刷新页面将console.log用户
向会话添加自定义对象/变量
要在护照会话中添加用户对象或任何其他内容,您可以按照以下方式执行此操作
req.session.passport.hi = "hello";
验证此后,在后续页面刷新时将其添加到会话中,请在使用以下中间件时查看控制台
app.use(function(req, res, next) {
console.log(req.session.passport.hi);
next();
});