是否有来自 Passport.js 的可选身份验证中间件?
假设我有一条路线,/api/users
。我只想向公众提供一个用户列表,但对于经过身份验证的人,我想添加更多字段。
目前我只有一个愚蠢的自定义方法可以做同样的事情,但我想知道:
- Passport.js 已经提供了这样的东西或者
- 我怎样才能使它成为 Passport 的一部分,就像一个插件一样。
我的方法大致是这样的
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();
});
}
然而,这对我来说似乎很愚蠢,而且在 passport-auth-strategies.js 或我认为应该存在的其他身份验证层中也不行。有什么更好的方法?
如果我找到一个 token 但它是无效的,告诉我是否做正确的事情返回 401 的奖励积分 :)
最佳答案
现在可能会迟到,但有一个 anonymous
Passport 策略可以完全实现这一点。这样,公共(public)路由可以进行身份验证或不进行身份验证,但是当他们这样做时,您仍然会拥有与经过身份验证的用户关联的所有信息。在这里查看:https://github.com/jaredhanson/passport-anonymous
关于javascript - Passport.js 可选身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25806339/