登录后重定向不工作

本文关键字:工作 重定向 登录 | 更新日期: 2023-09-27 18:09:47

我有一个成功登录后的重定向问题。基本上我想做的是,当用户输入他的userName和他的Login时,在表中进行查询搜索,并检索适当的角色,并根据该角色将用户重定向到他的特定文件夹。我正在尝试这个代码

private void imgBtnLogin_Click(object sender, ImageClickEventArgs e)
{
   FormsAuthentication.Initialize();
    SqlConnection con = new SqlConnection("data source=.; initial catalog = AxaStock; integrated security = true");
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandText = "select r.nomRole from Collaborateur c, Role r where r.idRole=c.idRole and matricule=@matricule and password=@password";
    cmd.Parameters.Add("@matricule", SqlDbType.VarChar, 64).Value = txtLogin.Text;
    cmd.Parameters.Add("@password", SqlDbType.VarChar, 128).Value = txtPassword.Text;
    con.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    if (reader.Read())
    {
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, txtLogin.Text,
            DateTime.Now, 
            DateTime.Now.AddMinutes(30), 
            true, 
            reader.GetString(0),
            FormsAuthentication.FormsCookiePath);
        string hash = FormsAuthentication.Encrypt(ticket);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
        if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;
        Response.Cookies.Add(cookie);
        string returnUrl = Request.QueryString["ReturnUrl"];

        if (returnUrl == null)
        {
            returnUrl = "/";
        }
    }
    else
    {
        lblError.Text = "Matricule / mot de passe incorrect. Réssayez !";
        lblError.Visible = true;
    }
    reader.Close();
    con.Close();

}

我的网页。配置

<system.web>
    <authentication mode="Forms">
        <forms name=".ASPXFORMSAUTH" loginUrl="Login.aspx"  protection="All" path="/"/>
    </authentication>
    <authorization>
        <allow users="*"/>
    </authorization>
</system.web>
  <location path="TP">
  <system.web>
      <authorization>
          <allow roles="Technicien de proximité"/>
          <deny users="*"/>
      </authorization>
  </system.web>
  </location>
  <location path="CDP">
      <system.web>
          <authorization>
              <allow roles="Chef de projet"/>
              <deny users="*"/>
          </authorization>
      </system.web>
  </location>

当我点击登录按钮时,它不会将我重定向到特定的文件夹,它停留在登录页面而不给我任何消息。我怎样才能被重定向到TP/Accueil ?aspx ? ?请帮助

登录后重定向不工作

您没有重定向代码中的任何地方。您的代码对用户进行身份验证。将其信息存储到cookie中。试试这个

  if (reader.Read())
    {
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, txtLogin.Text,
            DateTime.Now, 
            DateTime.Now.AddMinutes(30), 
            true, 
            reader.GetString(0),
            FormsAuthentication.FormsCookiePath);
        string hash = FormsAuthentication.Encrypt(ticket);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
        if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;
        Response.Cookies.Add(cookie);
        string returnUrl = Request.QueryString["ReturnUrl"];
        FormsAuthentication.RedirectFromLoginPage(txtLogin.Text, false);
        if (returnUrl == null)
        {
            returnUrl = "/";
        }
    }

也在你的Web.Config中。将此添加到<system.web>

 <authentication mode="Forms">
      <forms loginUrl="Login.aspx" name="logck">
      </forms>
  </authentication>

From msdn

中的URL http://www.contoso.com/login.aspx?ReturnUrl=caller.aspx,RedirectFromLoginPage方法将重定向到返回URLcaller.aspx。如果ReturnURL变量不存在,则RedirectFromLoginPage方法将重定向到DefaultUrl中的URL财产。在返回url参数中设置所需的url。要了解更多信息,请阅读RedirectFromLoginPage。