登录后重定向不工作
本文关键字:工作 重定向 登录 | 更新日期: 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。