[英]ASP.NET Forms Authentication Timeout and Session Timeout
我在asp.net中使用表單身份驗證。 我已將超時設置為1分鍾。 登錄后,如果通過身份驗證,我將被重定向到主頁(HomePage.aspx)。 一切正常。 如果我離開該網站並在1分鍾后回來,並嘗試訪問任何其他頁面,則將按預期重定向到“登錄”頁面。 我的問題是,如果我返回並做一些回發或刷新,則僅將我重定向到登錄頁面,否則我將停留在同一頁面上。 如果我在一分鍾后回來,該怎么辦才能使登錄頁面顯示在屏幕上。
<authentication mode="Forms">
<forms loginUrl="~/LoginPage.aspx" timeout="1"/>
</authentication>
<sessionState timeout="1"></sessionState>
在Global.asax
檢查您的Session_End
,然后嘗試放置一些代碼以重定向到您的登錄頁面。
您可以按照asp-net-push-redirect-on-session-timeout進行操作 。 該SO帖子在頁面標題部分顯示了使用<meta>
進行重定向的方法。 我沒有測試過,但是我懷疑設置<meta>
,它可能總是在會話超時后重定向,即使對於未登錄的頁面也是如此,特別是在MasterPages
實現的情況下。
如果您不想使用標題,或者想要基於JavaScript的自定義解決方案,則可以采用以下方式:
<script type="text/javascript">
// get session timeout value
var sessionTimeout = '<%= Session.Timeout %>';
// convert from minutes to ms
var sTimeout = parseInt(sessionTimeout) * 60 * 1000;
setTimeout('SessionWarning()', sTimeout);
function SessionWarning() {
// use a session variables (User_ID) that confirms we have a logged in user
var userid = '<%= Session("User_ID") %>';
// ignore for pages that can be viewed without login. In that case User_ID will not be set
// also on session end User_ID needs to be set to zero/null/blank
if (userid == '') {
} else {
if (parseInt(userid) > 0) {
// if the user is logged in redirect to login page on session timeout
window.location.href= '/LoginPage.aspx';
}
}
}
</script>
您可以將此腳本放在要自動重定向的頁面上,或放在要在所有頁面上使用的MasterPage
上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.