当ASP.NET 3.5的会话过期时,我希望将用户重定向到主页(Default.aspx)。我曾经尝试使用Web用户控件来实现,但效果并不完美。因此,我希望通过Web.config来实现。
<authentication mode="Forms">
<forms loginUrl="~/SignIn.aspx" protection="All" timeout="2880" path="/" />
</authentication>
这项技术在.NET 3.5框架应用中有效吗?
当ASP.NET 3.5的会话过期时,我希望将用户重定向到主页(Default.aspx)。我曾经尝试使用Web用户控件来实现,但效果并不完美。因此,我希望通过Web.config来实现。
<authentication mode="Forms">
<forms loginUrl="~/SignIn.aspx" protection="All" timeout="2880" path="/" />
</authentication>
这项技术在.NET 3.5框架应用中有效吗?
protected void Page_Init(object sender, EventArgs e)
{
CheckSession();
}
private void CheckSession()
{
if (Session["SessionID"] == null || !System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
{
Response.Redirect("Default.aspx");
}
}
没有母版页:
您可以尝试如下方法。
protected void Page_Load(object sender, EventArgs e)
{
if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
{
if (!IsPostBack)
{
}
}
else
{
Response.Redirect("Default.aspx", false);
}
}
请将这个逻辑用在每个网页上
如果使用了母版页:
请在您的masterpage.cs文件中使用上述逻辑
使用Web.Config:
<authentication mode="Forms">
<forms loginUrl="~/SignIn.aspx" protection="All" timeout="2880" path="/" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
如果您正在使用表单身份验证,则不需要编写任何自定义代码。会话超时设置由框架本身提供。只需按照以下所述更改配置文件即可:
<authentication mode="Forms">
<forms defaultUrl="~/Default.aspx"
loginUrl="~/Login.aspx"
slidingExpiration="true"
timeout="60" />
</authentication>
除了 SignIn.aspx
页面,我会为所有 webform 使用一个主页面,并在主页面的 init 方法中添加以下内容:
if((System.Web.HttpContext.Current.User == null) || !System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
Response.Redirect("SignIn.aspx");