перенаправление страниц - PullRequest
0 голосов
/ 14 июля 2009

как я могу перенаправить со своей страницы входа на домашнюю страницу после успешного входа? У меня есть одна база данных, в которой хранится имя пользователя и пароль. во время входа в систему он проверит имя пользователя и пароль по SQL-запросу. мой код показан ниже.

protected void Button1_Click(object sender, EventArgs e)
    {
        if (TextBox1.Text == "")
        {
            Label3.Visible = true;
            Label3.Text = "* Required Field";
        }
        else if (TextBox2.Text == "")
        {
            Label4.Visible = true;
            Label4.Text = "* Required Field";
        }

        else
        {
            Label3.Visible = false;
            Label4.Visible = false;
            userid = TextBox1.Text;
            pass = TextBox2.Text;

            SqlConnection conn = new SqlConnection("SERVER= server3\\OFFICESERVERS; Initial catalog = Web; Integrated Security = SSPI");
            SqlCommand mycmd = new SqlCommand();
            mycmd.Connection = conn;
            mycmd.CommandText = "SELECT FirstName, LastName, MiddleName, Email, Age FROM web WHERE IsActive=1 AND LoginName='" + userid + "' " + "AND Password='" + pass + "'"; 

            try
            {

                conn.Open();
                mycmd.ExecuteScalar();
                SqlDataAdapter da = new SqlDataAdapter(mycmd);
                DataTable dt = new DataTable();
                da.Fill(dt);
                GridView1.Visible=true;
                GridView1.DataSource = dt;
                GridView1.DataBind();
                TextBox1.Text = "";
                TextBox2.Text="";


            }

            finally
            {
                conn.Close();
                conn.Dispose();
            }
        }
    }

Мое требование заключается в том, что в случае успешного входа в систему я должен перенаправить со страницы входа на домашнюю страницу вместо привязки gridview. как это будет сделано?

Ответы [ 3 ]

3 голосов
/ 14 июля 2009

Прежде всего, посмотрите на использование сохраненных процедур! Эта команда SQL оставляет вас широко открытыми для проблем с внедрением SQL ( защита от внедрения SQL )

 mycmd.CommandText = "SELECT FirstName, LastName, MiddleName, Email, Age FROM web WHERE IsActive=1 AND LoginName='" + userid + "' " + "AND Password='" + pass + "'"; 

Если я ввел

  ' = '' or '1'='1

в качестве моего пароля он разрешил бы мне вводить любое имя пользователя!

Во-вторых, вы можете просто сделать Response.Redirect ("/lative / path / to / home.page", false); чтобы перенаправить вас на домашнюю страницу.

Я бы посмотрел на рефакторинг этого кода, чтобы у вас было несколько методов:

protected bool Login(string username, string password)  //handles logging the user in
protected void LoginSuccess() //handles the redirect if the user successfully logs in.
protected void BindDatagrid() //handles the databind if the user didn't log in.
1 голос
/ 14 июля 2009

В дополнение к ответу Мауро, вот еще несколько изменений, о которых вы можете подумать:

  1. Переименование ваших веб-элементов управления в имена, которые имеют больше смысла, например, txtPassword.
  2. Сохраните строку подключения в файле Web.config, чтобы обеспечить более гибкий переход от тестирования к производству.
  3. Используйте оператор using для соединения вместо try finally.
  4. SqlDataAdapter будет обрабатывать закрытие и открытие соединения.
  5. Вы можете использовать параметры вместо SP, если вы используете SQL Server 2005 или выше (SP не будет сильно улучшать производительность по сравнению со встроенным SQL).
0 голосов
/ 14 июля 2009

Ваше сеточное представление не имеет смысла, как будто вход в систему неуспешен, он не будет содержать ничего, и если вход в систему будет успешным, вы перейдете на другую страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...