Использование сессии для аутентификации пользователя в asp.net c # - PullRequest
2 голосов
/ 13 декабря 2011

Я использую сеанс для аутентификации пользователя. У меня есть 2 веб-страницы в моем проекте. Один - веб-форма, другой - EntryForm.aspx, а другой - log.aspx

В log.aspx я сделал

protected void Button1_Click(object sender, EventArgs e)
{
        user_login loginu = new user_login();
        String uid_db = loginu.login(this.DropDownList1, this.TextBox1, this.TextBox2, this.Label5);
        if (uid_db == "invalid")
        {
            Label5.Visible = true;
            Label5.Text = "Invalid Login";
        }
        else
        {

            string uname = uid_db.Substring(0, uid_db.IndexOf(",")).Trim();
            string[] tokens = uid_db.Split(',');
            string dbname = tokens[tokens.Length - 1];

            Session["login"] = uname;
            Session["db"] = dbname;
            Response.Redirect("EntryForm.aspx");
       }
}

В классе user_login Я беру пароль, хранящийся в базе данных, и сопоставляю его со значением, введенным пользователем. если он находит значение, я перенаправляю его в EntryForm.aspx. В котором я проверяю переменную сеанса следующим образом

protected void Page_Load(object sender, EventArgs e)
    {// CHEK SESSION VARIABLE AND LOAD dropdownlist1 WITH VALUES
        if (!IsPostBack)
        {
            String DB = "";
            String AccountID = "";
            if (Session["login"] != null && Session["db"] != null)
            {
                AccountID = Session["login"].ToString();
                DB = Session["db"].ToString();

                Label9.Text = AccountID;
            }
            else
            {
                Response.Redirect("log.aspx");
            }
            HiddenField1.Value = DB.ToString();
            DropDown a = new DropDown();
            a.filldropdown1(this.DropDownList1, DB);
        }
    }

Это то, что я сделал, аутентифицировал пользователя. На сервере я выполнил следующую конфигурацию:

enter image description here

Я не установил никаких настроек в Global.asax, и ничего не было web.config. Я видел много форумов, где Global.asax и web.config настроены.

Я хочу знать, что мне нужно делать в моем проекте, чтобы работать очень эффективно. У меня проблема с тайм-аутом сессии. Я установил его на 20 минут на моем сервере, но иногда внезапно я выхожу из системы.

Пожалуйста, помогите мне понять, как использовать сеанс для аутентификации.

1 Ответ

3 голосов
/ 13 декабря 2011

Прежде всего, вам нужно отредактировать web.config и установить атрибут времени ожидания сеанса.

<configuration>
  <system.web>
     <sessionState timeout="200"></sessionState>
  </system.web>
</configuration>

Другой проблемой является использование блока IsPostBack.

protected void Page_Load(object sender, EventArgs e)
    { 
     if (Session["login"] != null && Session["db"] != null)
      {
         String DB = "";
         String AccountID = "";
         AccountID = Session["login"].ToString();
         DB = Session["db"].ToString();
         Label9.Text = AccountID;
         HiddenField1.Value = DB.ToString();
         DropDown a = new DropDown();
         a.filldropdown1(this.DropDownList1, DB);
       }
     else
     {
         Response.Redirect("log.aspx");
      }
   }
...