Проверка подлинности с помощью форм завершается очень быстро, локально работает нормально! - PullRequest
0 голосов
/ 25 апреля 2010

Есть проблема, с которой я сталкиваюсь с моей хостинговой компанией, я использую проект, который использует FormsAuthentication, и проблема в том, что, хотя он успешно входит в систему, он выходит ОЧЕНЬ БЫСТРО, и я не знаю, в чем причина того, что, поэтому в моем файле web.config я добавил следующие строки:

<authentication mode="Forms" >
  <forms name="Nadim" loginUrl="Login.aspx" defaultUrl="Default.aspx" protection="All" path="/" requireSSL="false"/>
</authentication>
<authorization>
  <deny users ="?" />
</authorization>


<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"  cookieless="false"  timeout="1440">
</sessionState>

и это код, который я использую на своей странице входа в систему:

protected void PasswordCustomValidator_ServerValidate(object source, ServerValidateEventArgs args)
    {
        try
        {
            UsersSqlDataSource.SelectParameters.Clear();
            UsersSqlDataSource.SelectCommand = "Select * From Admins Where AdminID='" + IDTextBox.Text + "' and Password='" + PassTextBox.Text + "'";
            UsersSqlDataSource.SelectCommandType = SqlDataSourceCommandType.Text;

            UsersSqlDataSource.DataSourceMode = SqlDataSourceMode.DataReader;

            reader = (SqlDataReader)UsersSqlDataSource.Select(DataSourceSelectArguments.Empty);
            if (reader.HasRows)
            {
                reader.Read();
                if (RememberCheckBox.Checked == true)
                    Page.Response.Cookies["Admin"].Expires = DateTime.Now.AddDays(5);
                args.IsValid = true;

                string userData = "ApplicationSpecific data for this user.";

                FormsAuthenticationTicket ticket1 = new FormsAuthenticationTicket(1, IDTextBox.Text, System.DateTime.Now, System.DateTime.Now.AddMinutes(30), true, userData, FormsAuthentication.FormsCookiePath);
                string encTicket = FormsAuthentication.Encrypt(ticket1);
                Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
                Response.Redirect(FormsAuthentication.GetRedirectUrl(IDTextBox.Text, RememberCheckBox.Checked));

                //FormsAuthentication.RedirectFromLoginPage(IDTextBox.Text, RememberCheckBox.Checked);
            }
            else
                args.IsValid = false;

        }
        catch (SqlException ex)
        {
            ErrorLabel.Text = ex.Message;
        }
        catch (InvalidOperationException)
        {
            args.IsValid = false;
        }
        catch (Exception ex)
        {
            ErrorLabel.Text = ex.Message;
        }

Также вы найдете эту строку кода: FormsAuthentication.RedirectFromLoginPage (IDTextBox.Text, RememberCheckBox.Checked); комментируется, потому что я думал, что может быть что-то не так с билетом, когда я вхожу в систему, поэтому я создал его вручную, все, что я знал, я пытался, но ничего не получалось, так у кого-нибудь есть идеи в чем проблема? Заранее спасибо, Бахер.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2010

Вы изменяете вещи, которые не нужно изменять.

Удалите строку Response.Redirect(FormsAuthentication, раскомментируйте перенаправление и попробуйте заменить указанный конфиг на

<authentication mode="Forms" />
<authorization>
  <deny users ="?" />
</authorization>
<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"  cookieless="false"  timeout="1440"/>
0 голосов
/ 25 апреля 2010

Я думаю, что ваша проблема может быть в stateConnectionString = "tcpip = localhost: 42424", возможно, вам нужно настроить другой URL для вашего провайдера.

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