我在我的示例应用中使用基本身份验证
passport.use(new BasicStrategy(
function (userid, password, done) {
if (userid !== "foo" && passport !== "bar") {
return done(null, false);
} else {
return done(null, {
userId: "foo"
});
}
})
);
仅在一条路线上进行身份验证
app.use(
"/admin",
passport.authenticate('basic', { session: false }),
require("./admin"));
在admin.js内部,我有一个注销路径
router.get("/logout", (req, res) => {
req.logOut();
res.send("Goodbye!");
});
期待我呼叫http://localhost:3000/admin/logout时,auth会话将被终止。但是,即使在注销后,我仍然可以浏览路线“/ admin”
知道我错过了什么吗?
答案 0 :(得分:0)
确保按下一个顺序配置会话:
app.use(session({
secret: 'your secret',
saveUninitialized: false,
resave: false
}));
app.use(passport.initialize());
app.use(passport.session());
然后确保消除会话:
app.get('/logout', (req, res) => {
req.logout();
req.session.destroy();
res.redirect('/');
});
确保您调用logout而不是logOut。