我正在使用nodejs中的passportjs和mongodb實現多個本地策略。爲了實現身份驗證,我在deserializeUser中使用了中間件。像這樣的東西。我有兩種類型的用戶,一種是用戶,另一種是供應商。供應商將銷售產品,用戶將購買產品。 我已經爲供應商和用戶使用不同的本地策略名稱創建了不同的模式。驗證對我來說工作正常。使用mongodb和nodejs對Passportjs中的多個本地策略進行授權
module.exports = function(passport){
// Passport needs to be able to serialize and deserialize users to support persistent login sessions
passport.serializeUser(function(user, done) {
console.log('user id is: ' + user._id);
done(null, user._id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function (err, user) {
if(err)
done(err);
if(user) {
done(null, user);
}
else {
Vendor.findById(id, function (err, user) {
if(err)
done(err);
done(null, user);
});
}
});
});
我想要做的是,「用戶」賬號也不應該能夠訪問哪些是有供應商和供應商應該無法訪問的網頁,這是有用戶頁面。通過這種方式,我想爲這兩類用戶帳戶共享的數據提供訪問控制。 我認爲這是不可能的護照,但我們需要爲它寫一些中間件。我們可以通過一些中間件來實現嗎?或者我們可以使用npm中的任何包來實現這個目的。如果任何人都可以舉一些簡單的中間件的例子,那對我來說真的很有幫助。
爲什麼你不爲每種類型的用戶添加一個屬性並檢查該屬性以檢測它們的類型? –
Aᴍɪʀ所以你的意思是,在用戶的模式中,我應該添加一個字段,如isUser:true;在Vendor模式中,我應該添加一個如isVendor:true的字段。然後如果它是真的,那麼只有用戶可以訪問?你是這個意思嗎。 –
種類...我的意思是,如果屬性已經不同,那麼也可以使用它。例如,如果供應商具有'vendor_id',則可以檢查當前用戶是否擁有該供應商。 –