我不熟悉使用node.js进行身份验证,并且正在努力实现以下目标:
我目前有一个中间件功能,该功能检查与请求一起发送的访问令牌,并拉出与该令牌相关的用户,然后将该用户追加到请求中,以便我可以使用其详细信息。这对于我的Users
集合来说完全可以正常工作,但是我想为完全不同类型的用户添加一个名为Owners
的新集合。
基于我当前拥有的功能,我似乎找不到一种方法来检查两个集合-这是我当前的功能,可以与我的一个Users
集合一起使用。
//
// Middleware that authenticates token and appends user to request
//
module.exports.required = function (req, res, next) {
const auth_header = req.header("authorization").split(" ");
const auth_type = auth_header[0];
const auth_token = auth_header[1] || null;
// Check token
if (auth_type !== "Bearer" || !auth_token) {
return next(HttpError(401, "Token is invalid."));
}
// Find user matching access token
return User.findOne({ access_token: auth_token })
.orFail(HttpError(401, "Token does not exist."))
.then((user) => {
try {
// Check if token has no expired
decodeToken(auth_token);
} catch (err) {
if (err.name !== "TokenExpiredError") return next(err);
// Refresh token
user.generateAccessToken();
// Save and return new user
return user.save();
}
return user;
})
.then((user) => {
// Append user object to the incoming request
req.user = user;
return next();
})
.catch(next);
};
任何人都可以帮助我了解如何检查两个集合(用户和所有者)吗?