无法在expressjs 4中使用passportjs“logOut”

时间:2017-03-13 04:23:27

标签: node.js express passport.js

我在我的示例应用中使用基本身份验证

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”

知道我错过了什么吗?

1 个答案:

答案 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。