Passport.js - 是否可以将参数传递给路由器认证函数?

时间:2015-04-05 18:00:50

标签: node.js express authorization passport.js

我想将一定的权限传递给Passport.js中路由的经过身份验证的调用。

这就是我现在所拥有的:

app.get('/mypage', app.authenticated, function (req, res, next) {
    if (!req.user.hasPermission('myPermission')) {
        return res.redirect('/unauthorized');
    }

    // do stuff
};

var middleware = function(app) {
    app.authenticated = function (req, res, next) {
        if (req.isAuthenticated()) {
            return next();
        }

        if (req.method == 'GET') {
            req.session.returnTo = req.originalUrl;
        }

        res.redirect('/login');
    };
}

module.exports = middleware;

我希望将权限传递给authenticated,如下所示:

app.get('/mypage', app.authenticated('myPermission'), function (req, res, next) {
    // do stuff
};

但据我所知,由于经过身份验证可以自动获取所需的参数,因此我不能只添加一个新参数。

我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

您可以在任何快速中间件中访问 req.body 值。

app.authenticated(..)中间件中,在执行之前设置值: req.body['permission'] = 'myPermission'

使用req.body [' permission']的值进行授权。