如何限制只有管理员添加用户?

时间:2015-01-03 10:24:34

标签: angularjs express

我是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 错误 即..,数据不是来自登录页面。  发布此代码的主要目的是管理员只需在登录时添加用户。否则应发送消息,例如您不是管理员或请登录....

1 个答案:

答案 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();
        });