gpt4 book ai didi

node.js - 如何在node js中使用express重定向后app.get

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:21 30 4
gpt4 key购买 nike

我是 Node js 的新手,这是我的问题。

我在app.js中设置了从登录页面登录后重定向的代码,如下所示,

app.post('/login', function(req, res, next) {
passport.authenticate('local-login', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/login'); }
req.flash("email");
var email_address = req.body.email;
var username = email_address.substring(0, email_address.lastIndexOf("@"));
global_username = username;
return res.redirect('/status.html'+'?channel='+username);
})(req, res, next);
});

现在我想使用 app.get 获取 '/status.html'+'?channel='+username

所以我创建了这样的代码,

app.get('/status.html?channel='+ global_username, isLoggedIn, function(req, res){
console.log("Logged in");
var chk_username = req.body.email;
var temp = chk_username.substring(0, chk_username.lastIndexOf("@"));
if(temp != global_username){return res.json({success: false, message:"Unauthorized Attempt"});}
});

但是,它没有通过 app.get 函数。我尝试使用 console.log 检查它是否已登录,但没有出现任何内容。

有人有办法解决这个问题吗?

谢谢。

最佳答案

好吧,首先,如果您使用 global_username 作为实际的全局变量,那么这不是一个好主意。这意味着每当有人登录时,每个人的值都会发生变化。我认为这不是您想要的。

此外,您的 route 根本不应该包含查询字符串内容;这通常不是路由的一部分,只是路径的一部分。坦率地说,我什至没有遵循您在该函数中尝试执行的操作,但您应该注意的另一件事是 get 请求中没有正文,因此即使您点击此中间件,您也不会从 req.body 获取一个值。

如果您想要做的只是重定向到某个 URL,然后访问当前用户,那么 Passport 会在 req 对象中为您设置该内容,因此您可以执行以下操作:

app.get('/status.html, isLoggedIn, function(req, res){
console.log("Logged in");
if (req.user) return res.send({message: 'Success'});
return res.status(401).send({message: 'you are not logged in'});
});

关于node.js - 如何在node js中使用express重定向后app.get,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42336147/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com