2016-05-05 4 views
0

Перед тем, как применить проверку подлинности на странице входа, я могу перенаправить страницу входа и регистрации с домашней страницы сайта, но после применения проверки подлинности на странице входа в систему, когда я пытался перенаправить на страницу входа в систему он показывает мне ошибку (внизу изображение): enter image description hereневозможно перенаправить на страницу входа после проверки подлинности форм.

Я не могу узнать, где я делаю ошибку. Я опубликовал код входа в систему .cs и файл web.config. взгляните на это. покажите мне, где я делаю ошибку и каково решение.

LoginPage.aspx.cs: -

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Data; 
using System.Configuration; 
using System.Web.Security; 


public partial class Registration_LoginPage : System.Web.UI.Page 
{ 
Code code = new Code(); 
SqlConnection con; 
SqlCommand cmd; 
bool flag = true; 

public Registration_LoginPage() 
{ 
    con = new SqlConnection(); 
    con.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 
    cmd = new SqlCommand(); 
} 


protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 

    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    Response.Cache.SetExpires(DateTime.Now); 
    Response.Cache.SetNoServerCaching(); 
    Response.Cache.SetNoStore(); 
    } 

    if(User.Identity.Name !=String.Empty) 
    { 
     FormsAuthentication.RedirectFromLoginPage(User.Identity.Name, false); 
    } 


} 

protected void btnLogIn_Click(object sender, EventArgs e) 
{ 
    // String encryptedPassword = code.encrypt(Request.Form["password"]); 

    try 
    { 
     con.Open(); 
     cmd.CommandText = "select * from [Users]"; 
     cmd.Connection = con; 
     SqlDataReader rd = cmd.ExecuteReader(); 

     if (Request.Form["username"] == "admin" && Request.Form["password"] == "admin") 
     { 
      Session["Username"] = Request.Form["username"]; 
      Response.Redirect("/AdminHome/AdminMPage.aspx"); 
     } 
     else 
     { 

      while (rd.Read()) 
      { 
       if (rd["UserName"].ToString() == Request.Form["username"] && rd["Password"].ToString() == Request.Form["password"]) 
       { 
        Session["Username"] = rd["UserName"]; 
        flag = false; 
        break; 
       } 
      } 
      if (flag == true) 
       lblMsg.Text = "Username and password invalid"; 
      else 
      { 
       if (rd["Role"].ToString() == "Student") 
        // Response.Redirect("Student.aspx"); 
        FormsAuthentication.RedirectFromLoginPage(rd["Role"].ToString(), false); 

       /* else 
        Response.Redirect("Teacher.aspx"); */ 

       if (rd["Role"].ToString() == "Teacher") 
        FormsAuthentication.RedirectFromLoginPage(rd["Role"].ToString(), false); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     lblMsg.Text = ex.Message; 

    } 
} 

} 

web.config

<?xml version="1.0"?> 
 

 
<!-- 
 
    For more information on how to configure your ASP.NET application, please visit 
 
    http://go.microsoft.com/fwlink/?LinkId=169433 
 
    --> 
 

 
<configuration> 
 

 
    <connectionStrings> 
 
    <add name="ConnectionString" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True" 
 
     providerName="System.Data.SqlClient" /> 
 
    </connectionStrings> 
 

 
    
 

 
    <system.web> 
 

 

 
     <authentication mode="Forms"> 
 

 
     <forms loginUrl="/Registration/LoginPage.aspx"> 
 

 
     </forms> 
 

 
     </authentication> 
 

 

 
     <compilation debug="true" targetFramework="4.5.2" /> 
 
     <httpRuntime targetFramework="4.5.2" /> 
 
    </system.web> 
 
    
 
    <location path="FIRST PAGE"> 
 
     <system.web> 
 
     <authorization> 
 
      <allow users="*"/> 
 
      
 
     </authorization> 
 
     </system.web> 
 
    </location> 
 
    
 
    <location path="Registration"> 
 
     <system.web> 
 
     <authorization> 
 
      <allow users="*"/> 
 
      
 
     </authorization> 
 
     </system.web> 
 
    </location> 
 
    
 
    
 
    <location path="AdminHome"> 
 
     <system.web> 
 
     <authorization> 
 
      <allow users="admin"/> 
 
      <deny users="*"/> 
 
     </authorization> 
 
     </system.web> 
 
    </location> 
 
    
 
    <location path="Student"> 
 
     <system.web> 
 
     <authorization> 
 
      <allow roles="Student"/> 
 
      <deny users="*"/> 
 
     </authorization> 
 
     </system.web> 
 
    </location> 
 
    
 
<location path="Teacher"> 
 
     <system.web> 
 
     <authorization> 
 
      <allow roles="Teacher"/> 
 
      <deny users="*"/> 
 
     </authorization> 
 
     </system.web> 
 
    </location> 
 

 
    <appSettings> 
 

 
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/> 
 
    
 
    </appSettings> 
 
    
 

 
</configuration>

ответ

1

Помните, что использование FormsAuthentication.RedirectFromLoginPage требует Username и persistence, поэтому rd["Role"].ToString() не будет работать.

Следуйте этому примеру, так как он даст вам быстрое решение. FormsAuthentication.RedirectFromLoginPage to a custom page

 Смежные вопросы

  • Нет связанных вопросов^_^