簡體   English   中英

如何保持用戶使用彈出窗口登錄?

[英]How do you keep a user logged in with a popup window?

我有一個應用程序,要求用戶在15到30分鍾不活動之間重新輸入密碼,以允許他們繼續自己的工作。

我當前的想法是使用一段JavaScript,在15分鍾后調用一個彈出窗口,要求用戶再次登錄。 該站點整體上有15分鍾的表單身份驗證超時和30分鍾的會話超時。

然后,如果用戶在彈出窗口中成功對其進行身份驗證,我希望它允許原始頁面進行回發。

目前,我正在使用彈出式窗口(使用JS進行15分鍾的倒計時),並且用戶可以再次登錄,但是當彈出窗口關閉並且用戶嘗試在其原始頁面上執行操作時,系統要求他們登錄再次。

我認為這是因為附加在原始頁面上的原始cookie現在已經過期,並且不會檢測到新的cookie。

如何將成功的身份驗證從彈出窗口傳遞到原始頁面?

我將創建一個需要密碼的面板,並通過一個按鈕在方法后面有一個正確的代碼。

然后,您可以使用AJAX或jQuery觸發模式“彈出”框,要求他們提交詳細信息。 這樣,您可以將所有內容保存在單個頁面上,而不必擔心在頁面/表單/選項卡/任何頁面之間傳遞憑據。

此外,您可以使用1種腳本方法在x分鍾后觸發以提示刷新,並可以使用另一種JavaScript方法在x + 2分鍾后觸發以將用戶退出應用程序(如果他們無法響應)。

您的方法代碼可以正確地重置所有cookie並重置超時,並且可以在所需的任何頁面上重復使用。

如果您添加一個元標記或隱藏的div,該標記將身份驗證令牌填充在meta標簽的content屬性中,並且僅在div主體中的隱藏的div中,您可以像這樣從彈出窗口中獲取它...

var debugWin = window.open('','aWindow','width=600,height=600,scrollbars=yes');
var somevar = debugWin.document.body.getElementById("my_hidden_div_id").innerText;

然后,您可以使用JavaScript中somevar的內容更新會話cookie。 只要您維護窗口的句柄,您就應該能夠獲取窗口的DOM。

進入dom的方式可能會有一些跨瀏覽器的差異,我認為IE的方法略有不同,但易於測試,結果是相同的。

最好使用框架。 使頂部框架的高度為0,並使其自身定期刷新。 這樣,它不會被阻塞或意外關閉。 您可能還想研究使用Ajax做同樣的事情。

暫無
暫無

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

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