我有以下问题:
在我的web.config中,我有以下授权设置:
<authentication mode="Forms">
<forms loginUrl="~/LogIn" timeout="2880" name=".ASPXFORMSAUTH" defaultUrl="~/Dashboard/Dashboard.aspx"/>
</authentication>
我从之前的开发中继承的代码在登录后将用户对象存储到Session中。我打算暂时继续使用此逻辑。
现在,用户导航到该页面。 Cookie在登录时创建,用户信息存储在Session中。用户现在关闭页面的选项卡,但保持浏览器打开。用户等待导致会话到期的x时间,但不会等待cookie。用户现在尝试直接导航到他们之前的页面。表单身份验证认为他们已登录,但他们不是。因此,我登录的用户为空。
我正在尝试这样做:
protected void Page_Init(object sender, EventArgs e)
{
if (object.Equals(DashboardSessionRepository.Instance.LoggedInUser, null))
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
}
else
{
//Continue with page init
}
}
不幸的是,这不会导致当前页面取消其生命周期。
我想知道一些事情:
由于
答案 0 :(得分:1)
不幸的是,这不会导致当前页面取消其生命周期。
如果您希望停止生命周期,只需将RedirectToLoginPage之后的End放置为
if (object.Equals(DashboardSessionRepository.Instance.LoggedInUser, null))
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
Response.End();
return;
}
else