我用fetch()
發送的登錄POST請求, 服務器驗證後,我用req.session.account = account[0];
賬號信息保存到了會議,並返回重定向的URL,會話丟失後重定向
但重定向之後,會話中的帳戶信息丟失了,爲什麼?
我用fetch()
發送的登錄POST請求, 服務器驗證後,我用req.session.account = account[0];
賬號信息保存到了會議,並返回重定向的URL,會話丟失後重定向
但重定向之後,會話中的帳戶信息丟失了,爲什麼?
如果你有一些示例代碼,這將幫助我們追蹤這個問題。我的第一個想法是,以確保express-session
正確配置:
var app = express();
var session = require('express-session');
app.use(session({
secret: 'ibfiyegfiyegfe' // Secret is a required option.
}));
獲得進一步的配置選項,請參閱express-session repository。
編輯:基於額外的信息,我猜你已經配置了快速會話,也使用cookies來管理會話。這意味着,對於每個HTTP請求,Express都會發送一個包含cookie的響應。基於jQuery的AJAX調用會忽略但響應的cookie,這會導致連續請求快速看起來好像你從來沒有登錄,以便保存使用jQuery執行AJAX請求時,該Cookie,使用xhrFields
領域,使withCredentials
:
$.ajax({
url: "http://....",
type: "POST",
xhrFields: {
withCredentials: true
},
data: {username: username, password: password},
success: function(responseBody) {
console.log("success!");
},
error: function(responseBody) {
console.log("error!");
}
});
希望這會有所幫助。
對不起,我不清楚問題。我用fetch()
方法發送一個請求登錄。
fetch('/logon', {
method: 'post',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
account: account,
password: password
})
}).then(function(response){
return response.json();
}).then(function(json){
if(json.success == 1){
window.location.href = json.redirecturl;
}else{
indexDispatcher.dispatch({
actionType: 'logonFaild',
errorInfo: json.msg
});
}
});
,並且服務器的響應僅僅是簡單的JSON:
if (err) {
consoloe.log(err);
} else {
req.session.account = account[0]; //save account to session
var redirecturl = '/team/' + team[0].id;
console.log("account添加到session了");
res.json({
success: 1,
redirecturl: redirecturl
});
}
但是,當客戶端獲得redirecturl
和重定向,將account
數據丟失,所以會發生TypeError: Cannot read property 'id' of undefined
(ID保存在req.session.account)。
但是,當我使用jquery $.ajax
relpace fetch
,它運作良好。我不知道原因。
我有像你一樣的經歷數百次,我終於找到了問題。如果啓用或禁用Cookie,則無需擔心。
您只需要re-declare
部分腳本(變量 - 要顯示的數據)在if else
條件中。
只要redeclare
使用!isset,然後在if else
條件中提及兩次的相同變量,如果您瞭解我的意思,則使用相同的變量。
它會反覆回調相同的變量。並確保開始session
在頁面上方。無需擔心標題或白線,它實際上與它無關。
我試了一百萬次。你不需要打擾使用ajax
等PHP
可以做幾乎所有的事情。 cheerio
。
你的問題是什麼? –
請分享更多細節,特別是關於發生的錯誤。 – jkalden
只會在會話中丟失帳號信息,重定向後無法通過'req.session.account'獲取帳號信息。 – Showonne
看看[如何問](http://stackoverflow.com/help/how-to-ask)。你的問題是相當不確定的... – jkalden