2012-05-16 31 views
0

我正在從頁面每隔10秒後向服務器發送jquery ajax調用。現在,當用戶向服務器發出正常請求(無Ajax呼叫)(如果他閒置2分鐘),我希望用戶註銷。我已經做了一個超時2分鐘的表單身份驗證cookie,但問題是自動jquery ajax調用(每10秒後)不會使用戶未經身份驗證。我該如何處理這種情況。jquery ajax調用表單身份驗證問題

+0

2分鐘後清除AJAX請求的時間間隔? – ManseUK

+0

但過期已經延長了我的情況,因爲在我的情況下,滑動到期是正確的,並且由於在這2分鐘內ajax調用與延長到期有關。 –

回答

1

清除間隔2分鐘後取出驗證cookie:

var intervalID=window.setInterval(yourajaxfunction,10000); 

window.setTimeout( 
    function() { 
     clearInterval(intervalID); // cancel the ajax requests 
     clearCookie(); // remove the authentication cookie locally 
    }, 
    120000 // 2 minutes timeout 
); 

我猜測,在服務器端沒有爲驗證cookie的檢查 - 如果沒有找到,那麼將強制用戶重新認證。

+0

是的,應該由表單認證模塊自動完成。但在這種情況下,Ajax調用是連續進行的,並且由於cookie與ajax調用一起設置,表單身份驗證模塊會將用戶視爲已訪問該站點,因此它將進一步滑動到期,並且越多請求發送到服務器進一步到期將成爲。 –

+0

@RockySingh也許我的答案不夠詳細 - 這個想法是,Ajax調用將被停止(即時猜測你使用'setInterval'方法開始ajax調用?)...在2之後使用'clearTimeout()'方法分鐘(從頁面加載),並清除cookie ...這意味着沒有更多的通信和下一次用戶連接請求一個頁面 - 沒有cookie - 強制重新認證 – ManseUK

+0

但在頁面上可以有其他ajax調用比如說在該頁面上發送消息或某個聊天應用程序。用戶可能會從中發送消息。我只是希望我的連續ajax調用不應該延長表單身份驗證超時 –

0

您可以在服務器端進行驗證功能。每個ajax請求都會首先調用此驗證,並且如果有效,則正常執行腳本。如果無效,您可以清除Cookie。

+0

我沒有得到你。你有一些樣品或一些鏈接? –