【发布时间】:2017-02-20 03:46:54
【问题描述】:
我是 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 检查它是否已登录,但没有出现任何内容。
有没有人想办法解决这个问题?
谢谢。
【问题讨论】:
-
重定向用户后,终止与服务器的连接,从而阻止所有后续路由调用。您可以做的是在重定向之前执行您在获取请求期间执行的代码。
-
@Theodore_Kim 感谢您的评论! :) 那么你的意思是我应该在 res.redirect('/status.html'+'?channel ='+用户名);?
-
不,我的意思是在重定向客户端之后,您结束了响应过程,这意味着服务器将不再向服务器发送该原始请求的响应。因此,重定向客户端后,您将无法访问 GET 路由。我希望这是有道理的......
-
@Theodore_Kim 哦,好吧,我想我明白了!谢谢你的回答,希望你有一个美好的一天! :)
标签: node.js express redirect get