如何在 asp.net 3.5 中将用户重定向到会话超时时的默认页面

本文关键字:超时 会话 默认 重定向 用户 asp net | 更新日期: 2023-09-27 17:56:00

我只想在会话在 asp.net 3.5 中过期时将用户重定向到主页(默认.aspx)。我只是使用 Web 用户控制来做到这一点,但 Steel 它不能完美地工作。所以我只想用web.config来做。

<authentication mode="Forms">
  <forms loginUrl="~/SignIn.aspx" protection="All" timeout="2880" path="/" />
</authentication>

此技术是否适用于.net 3.5框架应用程序。

如何在 asp.net 3.5 中将用户重定向到会话超时时的默认页面

对于无母版页:

你可以试试这个。

protected void Page_Load(object sender, EventArgs e)
  {
    if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
    {
        if (!IsPostBack)
        {
        }
    }
    else
    {
        Response.Redirect("Default.aspx", false);
    }
}

在每个网页中使用此逻辑

如果使用母版页:

在母版页.cs文件中使用上述逻辑

使用 Web.Config:

<authentication mode="Forms">
  <forms loginUrl="~/SignIn.aspx" protection="All" timeout="2880" path="/" />
</authentication>
<authorization>
<deny users="?" />
</authorization>

您可以在page_init上检查会话,如下所示

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");
   }
}

如果您使用的是表单身份验证,则不必编写任何自定义代码。对于会话超时,设置由框架本身提供。只需更改配置文件,如下所述:

<authentication mode="Forms">
    <forms defaultUrl="~/Default.aspx"
        loginUrl="~/Login.aspx"
        slidingExpiration="true"
        timeout="60" />
</authentication>

上述配置将在会话过期时将用户重定向到登录页面。

我会对除SignIn.aspx以外的所有网络表单使用母版页,并在母版页 init 方法中使用它:

if((System.Web.HttpContext.Current.User == null) || !System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
    Response.Redirect("SignIn.aspx");

有关窗体身份验证的 MSDN 文章。