我在asp.net中使用表单身份验证。我将超时设置为1分钟。我登录后,如果经过身份验证,我将被重定向到主页(HomePage.aspx)。这工作正常。如果我远离网站并在1分钟后回来,并尝试访问任何其他页面,我将按预期重定向到登录页面。我的问题是,如果我回来做一些回复或刷新,那么只有我被重定向到登录页面,否则我将留在同一页面。如果我在1分钟后回来,我该怎么办才能登录页面出现在屏幕上。
<authentication mode="Forms">
<forms loginUrl="~/LoginPage.aspx" timeout="1"/>
</authentication>
<sessionState timeout="1"></sessionState>
答案 0 :(得分:0)
检查Session_End
中的Global.asax
,然后尝试将一些代码重定向到您的登录页面。
答案 1 :(得分:0)
您可以关注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
上以便在所有页面上使用。