Passport.js是否有可选的身份验证中间件?
假设我有路线,/api/users.我想向公众提供一个用户列表,但对于经过身份验证的人员,我想添加更多字段.
目前我只有一个愚蠢的自定义方法做同样的事情,但我想知道:
粗略地说,我的方法看起来像
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