如何在ASP.NET 3.5中实现用户会话超时后重定向到默认页面

3

当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框架应用中有效吗?

4个回答

5
您可以在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");
   }
}

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

请将这个逻辑用在每个网页上

如果使用了母版页:

请在您的masterpage.cs文件中使用上述逻辑

使用Web.Config:

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

为什么在ASP.NET WebForms中有母版页时每个网页都需要呢?http://msdn.microsoft.com/en-us/library/wtxbf3hh.ASPX - JP Hellemons

4

如果您正在使用表单身份验证,则不需要编写任何自定义代码。会话超时设置由框架本身提供。只需按照以下所述更改配置文件即可:

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

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

我可以将默认网址和登录网址设置为相同吗? - shalin gajjar

3

除了 SignIn.aspx 页面,我会为所有 webform 使用一个主页面,并在主页面的 init 方法中添加以下内容:

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

关于表单身份验证的MSDN文章。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接