2
我使用Node.js構建了一個API,並且我有一些我想保護的端點。使用Passport基於動態路由進行身份驗證
爲簡單起見,我們假設我爲所有終端使用HTTP基本身份驗證(passport-http
)。
我想要做的就是確保這樣的路線:api.example.com/users/:uid/
只能由具有該ID的用戶訪問。
我可以像這樣做:
app.get('/users/:uid',
passport.authenticate('basic', {
session: false
}),
function (req, res, next) {
if (req.params.uid !== user.id) {
return next(new Error('Unauthorized'));
}
return next();
},
function (req, res, next) {
// do secret stuff
}
);
但我不知道是否有辦法做到這一點無需增加額外的中間件,通過使用Passport本身:
app.get('/users/:uid',
passport.authenticate(???),
function (req, res, next) {
// do secret stuff
}
);
是否有可能?如果不是,還有更好的方法嗎?