簡體   English   中英

注銷無法在瀏覽器上關閉,打開了多個選項卡

[英]Logout not working on browser close, with multiple tab opened

我正在執行基於SAML的身份驗證,並希望我的用戶在關閉瀏覽器的情況下退出系統:我編寫了以下瀏覽器輔助代碼:

window.onbeforeunload =function(e){

deleteAllCookies();

var my_form=document.createElement('FORM');
my_form.name='my_form';
my_form.method='POST';
my_form.action="sessionExpired.do";

var hiddenText=document.createElement('INPUT');
hiddenText.type='HIDDEN';
hiddenText.name='crash';
hiddenText.ID='crash';
hiddenText.value='yes';
my_form.appendChild(hiddenText);

my_form.submit();

return;


};

如果打開一個選項卡,此代碼將調用我的注銷服務並能夠注銷系統,但是如果與我的應用程序一起打開了多個其他選項卡,則該功能將不起作用。即,如果有多個選項卡,則我的服務器代碼會被調用,從而使會話無效,但會話仍保持登錄狀態,並且不再要求進行身份驗證。

在處理程序中可以對beforeunload進行beforeunload

您可以返回文本以提示用戶詢問他們是否確定要離開。 但是,您不能強制窗口保持打開狀態足夠長時間以向服務器發出請求。

  • 如果您不返回字符串,則窗口將立即關閉,並且您的表單提交也不會得到處理。
  • 如果您確實返回了字符串,則將詢問用戶是否確定要關閉窗口。 如果是,該窗口將關閉,並且您的表單提交也不會得到處理。 如果否,則該窗口將不會關閉。

刪除cookie可能會起作用,但是我認為在關閉窗口時無法提交表單或向服務器發出請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM