2009-08-18 8 views
0

Wenn ich die folgende Einstellung zu verwenden, bin ich nicht in der Lage Server.Transfer() verwenden/Response.Redirect() auf eine gesicherte Seite zu umleiten:asp.net ein einer gesicherten Seite Problem

<authentication mode="Forms"> 
     <forms 
      name="CookieDemo" 
      loginUrl="Default.aspx" 
      protection="All" 
      timeout="30" 
      path="/" 
     /> 
     </authentication> 
     <authorization> 
     <deny 
      users="?" 
     /> 

Ich muss alle Seiten außer Default.aspx schützen.

Was soll ich tun, um dieses Problem zu lösen?

Beachten Sie, dass ich nicht den integrierten Mitgliedschaftsanbieter von asp.net verwende.

Hier ist mein Umleiten Code:

protected void Page_Load(object sender, EventArgs e) 
     { 
      AspNetUtil util = new AspNetUtil(this); 

      //util.DisposeCookie("user"); 

      UserTypeEnum userType = EnumUtility.ConvertToEnum(util.GetCookieValue("user", "usertype")); 
      string username = util.GetCookieValue("user", "username"); 

      if (userType == UserTypeEnum.Student) 
      { 
       //Server.Transfer("~/Student/StudentControlPanel.aspx?username=" + username); 
       Response.Redirect("~/Student/StudentControlPanel.aspx?username=" + username); 
      } 
      else if (userType == UserTypeEnum.Teacher) 
      { 
       //Server.Transfer("~/Teacher/TeacherControlPanel.aspx?username=" + username); 
       Response.Redirect("~/Teacher/TeacherControlPanel.aspx?username=" + username); 
      } 
     } 

protected void btnLogin_Click(object sender, EventArgs e) 
     { 
      string username = this.usernameTextBox.Text; 
      string password = this.passwordTextBox.Text; 

      bool success = Ice_Web_Portal.BO.User.LogIn(username, password); 

      if (success) 
      { 
       Ice_Web_Portal.BO.User user = Ice_Web_Portal.BO.User.GetUserByUserName(username); 

       Ice_Web_Portal.BO.UserTypeEnum loginUserType = user.UserTypeEnum; 

       if (loginUserType == UserTypeEnum.Student) 
       { 
        AspNetUtil util = new AspNetUtil(this); 
        util.SaveInCookie("user", "username", username, 3600); 
        util.SaveInCookie("user", "usertype", "Student", 3600); 

        //Server.Transfer("~/Student/StudentControlPanel.aspx?username=" + username); 
        Response.Redirect("~/Student/StudentControlPanel.aspx?username=" + username); 
       } 
       else if (loginUserType == UserTypeEnum.Teacher) 
       { 
        AspNetUtil util = new AspNetUtil(this); 
        util.SaveInCookie("user", "username", username, 3600); 
        util.SaveInCookie("user", "usertype", "Teacher", 3600); 

        //Server.Transfer("~/Teacher/TeacherControlPanel.aspx?username=" + username);     
        Response.Redirect("~/Teacher/TeacherControlPanel.aspx?username=" + username); 
       } 
       else 
       { 
        labLoginMessage.Text = "Sorry! Type of user couldn't be determined!"; 
       } 
      } 
      else 
      { 
       labLoginMessage.Text = Ice_Web_Portal.BO.User.LoginMessage; 
      } 
     } 

Dies funktioniert nicht entweder:

<location path="Default.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="*"></allow> 
     </authorization> 
    </system.web> 
    </location> 

Antwort

2

ASP.NET Formularauthentifizierung verfügt über einen eigenen Cookies, die es zu bestimmen, verwendet, wenn der Benutzer authentifiziert ist. Verwenden Sie anstelle von Response.Redirect oder Server.Transfer System.Web.Security.FormsAuthentication.RedirectFromLoginPage, wodurch der Cookie gesetzt und der Benutzer umgeleitet wird.

Verwandte Themen