PassportJS中的req.logout()仅在更改路线时有效吗?

时间:2019-01-05 18:11:21

标签: node.js mongodb passport.js ejs

我正在尝试在我的应用程序上使用req.logout()函数。但是,我似乎遇到了一个问题,导致该功能无法正常工作。这是什么很奇怪:

我已经仔细检查了我的href都指向正确的路由,所以是正确的。 如果我将路由更改为“ / out”之类并刷新服务器,则在我第一次按下注销按钮时,它将起作用。但是,如果我重新登录并重试,将无法使用。

换句话说,仅当我更改路由结构时,我的注销路由才有效,并且仅在我首次登录新的路由结构时才有效。这是我设置代码的方式:

//设置

app.use(require("express-session")({
    secret: "Something",
    resave: false,
    saveUninitialized: false
}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());

passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.use(function(req, res, next) {
    res.locals.currentUser = req.user;
    res.locals.error = req.flash("error");
    res.locals.success = req.flash("success");
    next();
});

//所有路线

app.get("/signup", function(req, res) {
    res.render("signup.ejs");
});

app.post("/signup", function(req, res) {
    User.register(new User({username: req.body.username}), req.body.password, function(err, newUser) {
        if (err) {
            console.log(err);
        } else {
            passport.authenticate("local")(req, res, function() {
                req.flash("success", "You're now registered in as " + newUser.username + "!");
                res.redirect(301, "/");  
            });
        }
    })
});

app.get("/login", function(req, res) {
    res.render("login.ejs");
});

app.post("/login", passport.authenticate("local", {
    successRedirect: "/",
    failureRedirect: "/login"
}), function(req, res) {
});

app.get("/logout", function(req, res) {
    req.logout();
    req.flash("success", "You have logged out!");
    res.redirect(301, "/");
});

// HTML(使用EJS)

<div class="nav__user">
                    <% if (!currentUser) { %>

                        <a href="/login" class="loginButton">Login</a>
                        <a href="/signup" class="signupButton">Sign Up</a>

                    <% } else { %>

                        <p><%= currentUser.username %></p>
                        <a href="/logout">Log Out</a>

                    <% } %>
</div>

非常感谢您的帮助。不知道是什么原因造成的。

0 个答案:

没有答案