快速服务器重定向问题
express server redirect issues
我是 building/learning 一个使用 React 和 Express 的网络应用程序。所有的路由和重定向都有效,但 URL 不会改变,我的道具不会通过,直到我手动转到 URL。
例如;
成功登录后(带有 MongoDB 的本地护照),它呈现主页但它是空的,因为我没有获得任何数据(用户 ID 或电子邮件等)但是如果输入 URL 手动或按导航栏上的主页按钮,它可以工作,或者如果我注销它注销但 URL 停留在 /logout 而不是 /login。示例代码如下:
server.js
...
server.use((req, res, next) => {
res.locals.success_msg = req.flash("success_msg");
res.locals.error_msg = req.flash("error_msg");
res.locals.error = req.flash("error");
res.locals.messages = req.flash();
res.locals.user = req.user;
next();
});
server.get("/index", ensureAuthenticated, (req, res) => {
const msg = {name: req.user.name, email: req.user.email};
return app.render(req, res, "/index", msg);
});
server.post("/login", (req, res, next) => {
passport.authenticate("local", function(err, user, info) {
if (err) {
return next(err);
} else if (!user) {
req.flash("error_msg", info.message);
return app.render(req, res, "/login", req.flash());
} else {
req.logIn(user, function(err) {
if (err) {
return next(err);
}
req.user = user.name;
return app.render(req, res, "/index", user.name);
});
}
})(req, res, next);
});
server.get("/logout", (req, res) => {
req.logOut();
req.flash("success_msg", "done!");
return app.render(req, res, "/login", req.flash());
});
server.get("*", ensureAuthenticated, (req, res) => {
return handle(req, res);
});
我是 building/learning 一个使用 React 和 Express 的网络应用程序。所有的路由和重定向都有效,但 URL 不会改变,我的道具不会通过,直到我手动转到 URL。
例如;
成功登录后(带有 MongoDB 的本地护照),它呈现主页但它是空的,因为我没有获得任何数据(用户 ID 或电子邮件等)但是如果输入 URL 手动或按导航栏上的主页按钮,它可以工作,或者如果我注销它注销但 URL 停留在 /logout 而不是 /login。示例代码如下:
server.js
...
server.use((req, res, next) => {
res.locals.success_msg = req.flash("success_msg");
res.locals.error_msg = req.flash("error_msg");
res.locals.error = req.flash("error");
res.locals.messages = req.flash();
res.locals.user = req.user;
next();
});
server.get("/index", ensureAuthenticated, (req, res) => {
const msg = {name: req.user.name, email: req.user.email};
return app.render(req, res, "/index", msg);
});
server.post("/login", (req, res, next) => {
passport.authenticate("local", function(err, user, info) {
if (err) {
return next(err);
} else if (!user) {
req.flash("error_msg", info.message);
return app.render(req, res, "/login", req.flash());
} else {
req.logIn(user, function(err) {
if (err) {
return next(err);
}
req.user = user.name;
return app.render(req, res, "/index", user.name);
});
}
})(req, res, next);
});
server.get("/logout", (req, res) => {
req.logOut();
req.flash("success_msg", "done!");
return app.render(req, res, "/login", req.flash());
});
server.get("*", ensureAuthenticated, (req, res) => {
return handle(req, res);
});