ASP.NET登录控件不重定向

时间:2018-06-11 17:13:36

标签: asp.net login controls

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

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");
        }

我一直致力于未登录用户无法访问某些页面的功能,但我不确定这是否会导致其搞砸..

稍微摆弄后,我发现拒绝用户似乎对它有影响,但是不知道任何其他方式可以重定向非登录尝试。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

查看您的代码,在sql命令中,您的查询将密码参数定义为@Password,同时将其添加到cmd参数集合中,而不是@ @Wachtwoord,而不是@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获取返回网址,而不是始终重定向到Home.aspx。因此,如果您尝试访问某些页面Protected.aspx而不登录,则用户将被重定向到Login.aspx?ReturnUrl=protected.aspx,登录后用户将被重定向到Protected.aspx页面。

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