我使用节点并尝试重定向客户端后,他授权自己。为此我使用的使用在客户端AJAX它的形式POST方法:节点授权和重定向使用AJAX后
$.ajax({
type: "POST",
url: '/login',
dataType: "json",
async: false,
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa(credentials.username + ":" + credentials.password));
},
data: credentials,
success: function() {
window.alert("Success! (whatever that means)");
}
});
然后在服务器端我试图重定向到实际的页面与命令
app.get('/login', loginInternalApp);
app.post('/login', function (req, res){
var postContents = req.body;
req.session.username = postContents.username;
res.redirect('/my_secret_page');
});
app.get('/my_secret_page', checkAuth, function (req, res) {
console.log("sending the message!");
res.send('if you are viewing this page it means you are logged in');
res.end();
});
其中checkAuth从这里被采取how to implement login auth in node.js(而不是user_id我使用的用户名;这不是问题)。
也许我不知道的是如何正确对待这个Ajax调用。我打印了一些控制台消息,服务器一直到res.send('如果您正在查看此页面...'),则客户端上没有任何反应。然后当我按控制-C来终止服务器时,弹出警报窗口。同时,我可以看到成功传递的函数可以有参数(现在猜测:errorCode,errorString,otherData,也许更多)。
那么我做错了什么?
如果我通过使按钮成为“提交”按钮来正常提交登录,那么它实际上会对地址执行GET操作: GET/login?username = whatever&password = something 这显然不是我想要的。我真正想要的是用POST(我应该使用PUT?)提交用户凭证,在会话中设置用户名,并在随后的来自客户端的调用中使用在会话中找到的用户名,以便弄清楚谁是GET/PUTTING/POSTING /等。我使用ajax,因为它很简单。我收集数据,我想发布POST。 – MightyMouse
我改变了标题,因为我在SO的某个地方发现了这种情况必须发生。老实说,我想要做一些简单的事情。 – MightyMouse
已投放,因为它有帮助。 – MightyMouse