ASP.NET 登录控件不重定向



我的登录控件不再按预期工作。它从数据库中提取用户名和密码,然后将用户重定向到 Home.aspx。可悲的是,重定向不会发生。它确实将其添加到 url 的末尾,但没有任何反应

ReturnUrl=%2fHome.aspx

这是缩短的ASP代码

<asp:Login ID="Login1" runat="server" OnAuthenticate= "ValidateUser" 
DestinationPageUrl="~/Home.aspx"> </asp:Login>

加上.cs代码

protected void ValidateUser(object sender, AuthenticateEventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DB_CONNE"].ConnectionString);
con.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Username =@Username and Password=@Password", con);
cmd.Parameters.AddWithValue("@Username", Login1.UserName);
cmd.Parameters.AddWithValue("@Wachtwoord", Login1.Password);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
Session["Uname"] = Login1.UserName;
if (dt.Rows.Count > 0)
{
Response.Redirect("Home.aspx");
}

我一直在研究未登录的用户无法访问某些页面的功能,但我不确定这是否是搞砸它的原因。

在摆弄了一下之后,我注意到拒绝用户似乎对它有影响,但不知道任何其他方法来重定向非登录尝试。

任何帮助将不胜感激!

查看您的代码,在 sql 命令中,您的查询将密码参数定义为@Password,同时将其添加到您@Wachtwoord的 cmd 参数集合中,而不是@Password。

以下是更新的代码:

SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Username =@Username and Password=@Password", con);
cmd.Parameters.AddWithValue("@Username", Login1.UserName);
cmd.Parameters.AddWithValue("@Password", Login1.Password);

此外,您可以使用 FormsAuthentication.GetRedirectURL 获取返回 URL,而不是总是重定向到主页.aspx而是。因此,如果您尝试访问某些受保护的页面.aspx而不登录,用户将被重定向到Login.aspx?ReturnUrl=protected.aspx登录后用户将被重定向到受保护.aspx页面。

if (dt.Rows.Count > 0)
{
Response.Redirect(FormsAuthentication.GetRedirectUrl( Login1.UserName, false));
}

最新更新