ASP.NET Логин контроль не перенаправляет - PullRequest
0 голосов
/ 11 июня 2018

Мой контроль входа не работает, как задумано.Он извлекает имя пользователя и пароль из базы данных, а затем перенаправляет пользователя на Home.aspx.К сожалению, перенаправление не происходит.Это добавляет это в конец URL, но ничего не происходит

ReturnUrl=%2fHome.aspx

Это краткий ASP-код

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

Plus .cs code

    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 голосов
/ 11 июня 2018

Глядя на ваш код, в команде sql ваш запрос имеет параметр пароля, определенный как @Password, при добавлении его в коллекцию параметров cmd вместо @Password у вас есть @Wachtwoord.

Вот обновленный код:

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

Кроме того, вместо того, чтобы всегда перенаправлять на Home.aspx, вы можете получить URL возврата, используя FormsAuthentication.GetRedirectUrl .Поэтому, если вы попытаетесь получить доступ к какой-либо странице Protected.aspx без входа в систему, пользователь будет перенаправлен на Login.aspx?ReturnUrl=protected.aspx, а после входа пользователь будет перенаправлен на страницу Protected.aspx.

  if (dt.Rows.Count > 0)
        {
            Response.Redirect(FormsAuthentication.GetRedirectUrl( Login1.UserName, false));
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...