2014-02-10 3 views
0

Я создал веб-метод для своего веб-сайта. Я хочу, чтобы иметь возможность отображать следующую информацию ниже, когда они успешно вошли в систему. Как мне это достичь?Отображать информацию пользователя после входа в систему

[WebMethod] 
     public Student Login(string Username, string Password) 
     { 
      cn.Open(); 
      SqlCommand com = new SqlCommand("SELECT * FROM tblStudent WHERE Username = '" + Username + "' and Password = '" + Password + "'", cn); 
      SqlDataReader sr = com.ExecuteReader(); 
      while (sr.Read()) 
      { 
       Student student = new Student() 
       { 
        StudentID = sr.GetInt32(0), 
        StudentNumber = sr.GetString(1), 
        Name = sr.GetString(2), 
        Surname = sr.GetString(3), 
        DOB = sr.GetDateTime(4), 
        Gender = sr.GetString(5), 
        EmailAddress = sr.GetString(6), 
        Address1 = sr.GetString(7), 
        Address2 = sr.GetString(8), 
        City = sr.GetString(9), 
        Postcode = sr.GetString(10), 
        Username = sr.GetString(11), 
        Password = sr.GetString(12), 
        Course = sr.GetString(13) 
       }; 
       cn.Close(); 
       return student; 
      } 

      cn.Close(); 
      return new Student(); 
     } 

protected void Button1_Click(object sender, EventArgs e) 
     { 
      ServiceReference1.Service1SoapClient Log = new ServiceReference1.Service1SoapClient(); 

      Student s = Log.Login(txtUsername.Text, txtPassword.Text); 

      if (s.StudentID > 0) 

      { 
       Session.Add("UserAuthentication", s); 
       //Session["Authenticated"] = true; 
       //Session.Timeout = 1; 
       Response.Redirect("Profile.aspx"); 

      } 
      else 
      { 
       Response.Write("<script type=\"text/javascript\">alert('Username or Password is Incorrect. Please Try Again!');</script>"); 
      }   
     } 

У меня есть следующий код для отображения информации на странице профиля, но она не работает.

protected void Page_Load(object sender, EventArgs e) 

     { 
      //string DOB; 
      if (Session["UserAuthentication"] != null) 
      { 
       Student student = new Student(); 
       student.StudentNumber = lbStudentNum.Text; 
       student.Name = lbName.Text; 
       student.Surname = lbSurname.Text; 
       // student.DOB = lbDOB. 
       // student.Gender = lbGender.Text; 
       student.EmailAddress = lbEmailaddress.Text; 
       student.Address1 = lbAddress1.Text; 
       student.Address2 = lbAddress2.Text; 
       student.City = City.Text; 
       student.Postcode = Postcode.Text; 

      } 

      else 
      { 
       Response.Redirect("Index.aspx"); 
      } 
+1

Пожалуйста параметризировать ваш запрос, чтобы избежать атак SQL-инъекции, второй хэш пароля. Мне не нравится это говорить, но в настоящее время это выглядит как пример классических плохих методов безопасности. – Liath

+0

Как мне это сделать? Я только начал использовать ASP.NET, поэтому у меня нет такого большого знания об этом. Thanks – user3284789

+0

http://stackoverflow.com/questions/7505808/using-parameters-in-sql-statements :) – Liath

ответ

0

Первый тип отбрасывать свой объект из сессии затем поместить эти значения в элементах управления, как это:

protected void Page_Load(object sender, EventArgs e) 
    { 
     //string DOB; 
     if (Session["UserAuthentication"] != null) 
     { 
      Student student = (Student)Session["UserAuthentication"]; 
      lbStudentNum.Text= student.StudentNumber ; 
      City.Text= student.City; 
      Postcode.Text= student.Postcode ; 
     } 
     else 
     { 
      Response.Redirect("Index.aspx"); 
     } 
+0

спасибо, что это сработало. Как преобразовать дату в строку (для DOB) – user3284789

+0

@ user3284789, не см. Мой комментарий о параметризованных запросах. Это также решит вашу проблему и сделает ваш код более безопасным. – Liath

+0

lbDOB.Text = student.DOB.ToString(); –

Смежные вопросы