[英]nodejs read session from database
我使用nodejs,nowjs,codeigniter和mysql編寫應用程序。 我正在使用數據庫來存儲會話。 有沒有一種好的方法來檢查和檢索nodejs中的會話cookie? 因此,例如,如果要這樣做,我需要使用nowjs檢查用戶是否擁有將要刪除的數據庫中的特定行。 例如:
服務器:
//some code here to get session cookie and retrieve stored data from database
var session = { user_id: //userid from database }
everyone.now.deleteGuestbook = function(recordId) {
var owner_id = client.query(
'SELECT owner_id FROM guestbook WHERE id = ?',
[recordId]
);
if (session.user_id === owner_id) {
client.query(
'DELETE FROM guestbook WHERE id = ?',
[recordId], function() {
everyone.now.deleteRecord;
}
);
}
}
客戶:
//Delete guestbook record
$('#guestbook_records li').live('click', function(e) {
if ($(e.target).is('a.delete')) {
var id = $(this).find('a.delete').attr('href');
dialogBox('warning', 'Are you sure you want to delete the record?',
function() {
now.deleteGuestbook(id);
});
}
else {
return;
}
return false;
});
now.deleteMessage = function(id) {
$('li[class="' + id + '"]').slideUp(400, function() {
$(this).remove();
});
};
會話ID通常保存在客戶端Cookie中,該客戶端Cookie在httpServer處理程序中以request.headers.cookie的形式出現。
您需要知道包含會話ID的cookie的名稱,然后:
var cookies=(function(str){ # create hash from cookie string
var result={};
str.split(/;\s+/).forEach(function(e){
var parts=e.split(/=/,2);
result[parts[0]]=parts[1]||'';
});
return result;
})(request.headers.cookie),
sessionCookieName='session', # name of cookie holding session id
sessionId=cookies[sessionCookieName]||''; # session id or ''
您的客戶代碼凌亂
// live is bad and inefficient
$('#guestbook_records li').live('click', function(e) {
// this kind of check seems horrid
if ($(e.target).is('a.delete')) {
// not very optimum to find it.
var id = $(this).find('a.delete').attr('href');
dialogBox('warning', 'Are you sure you want to delete the record?',
function() {
now.deleteGuestbook(id);
});
}
else {
// why return here?
return;
}
// return false should be in if block.
return false;
});
試試這個
$("#guestbook_records li a.delete").click(function(e) {
var id = this.href;
dialogBox("warning", "Are you sure you want to delete the record?",
function() {
now.deleteGuesBook(id);
});
e.preventDefault();
}
而且.hasClass
更好
now.deleteMessage = function(id) {
$('li').hasClass(id).slideUp(400, function() {
$(this).remove();
});
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.