首页 > 解决方案 > 如何在 ASP.Net c# 中的会话超时后重定向页面?

问题描述

我试过这个东西,但重定向不起作用......

  `<sessionState timeout="60"></sessionState>
        <authentication mode="Forms">
          <forms defaultUrl="login.aspx"
              loginUrl="login.aspx"
              slidingExpiration="true"
              timeout="60" />
        </authentication>`

我的asp代码

    ```
    void Session_Start(object sender, EventArgs e)   
       {  
           // Code that runs when a new session is started  
           if (Session["LoginUserName"] != null)  
           {  
           //Redirect to Welcome Page if Session is not null  
               Response.Redirect("Welcome.aspx");  

           }  
           else  
           {  
           //Redirect to Login Page if Session is null & Expires   
               Response.Redirect("Login.aspx");  

           } 

welcome.aspx 和 login.aspx 是网络表单

标签: c#asp.net

解决方案


Session_Start 不是放置重定向的正确位置。在 Welcome.aspx 中,输入以下逻辑:

protected override void OnInit(EventArgs e)
{
   base.OnInit(e);
   if (!Request.IsAuthenticated)
   {
      FormsAuthentication.RedirectToLoginPage();
      HttpContext.Current.ApplicationInstance.CompleteRequest();
   }
}

在 Login.aspx 中:

protected void btnLogin_Click(object sender, EventArgs e)
{
   if (ValidateUser())
      FormsAuthentication.RedirectFromLoginPage(Username.Text, true);
}

private bool ValidateUser()
{
   // put here your user validation logic
}

请注意:这是一种非常简单的身份验证方式,如果您需要实现自己的验证逻辑,则很有用;您可能需要使用 SqlMembershipProvider 或更好的 ASP.Net Identity来检查会员资格( https://docs.microsoft.com/it-it/previous-versions/aspnet/yh26yfzy(v=vs.100) ) :https ://docs.microsoft.com/en-us/aspnet/identity/ 。


推荐阅读