我使用節點並嘗試重定向客戶端後,他授權自己。爲此我使用的使用在客戶端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