相关疑难解决方法(0)

Passport.js可选身份验证

Passport.js是否有可选的身份验证中间件?

假设我有路线,/api/users.我想向公众提供一个用户列表,但对于经过身份验证的人员,我想添加更多字段.

目前我只有一个愚蠢的自定义方法做同样的事情,但我想知道:

  • Passport.js已经提供了这样的东西或
  • 我怎样才能使这成为护照的一部分,就像插件一样.

粗略地说,我的方法看起来像

function optionalAuth(req, res, next) {

    var authHeader = req.headers.authorization;
    var token = parseToken(authHeader); // just getting the OAuth token here
    if(!token) {

        return next();
    }
    User.findOne({
        token: token
    }, function(err, user) {

        if(err) {
            return res.json(401, {message: 'auth expired'});
        };
        if(user) {
            req.user = user;
        }
        next();
    });
}
Run Code Online (Sandbox Code Playgroud)

然而,这对我来说似乎是愚蠢的,而且在passport-auth-strategies.js或其他我认为应该存在的auth层中也没有.有什么更好的方法呢?

奖励点告诉我,如果我找到一个令牌但是它无效,我是否正在做正确的事情返回401

javascript authentication node.js oauth-2.0 passport.js

11
推荐指数
2
解决办法
4431
查看次数