powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Контрол Login созданный динамически, что передать в параметре для обработчика события?
6 сообщений из 6, страница 1 из 1
Контрол Login созданный динамически, что передать в параметре для обработчика события?
    #39607194
it-sphere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Какие данные нужно передать в параметре, для обработчика события, динамически созданного контрола Login?

Контроллер размещенный на странице передает параметр
Код: vbnet
1.
e As System.Web.UI.WebControls.AuthenticateEventArgs

в свой обработчик события.
Контроллер
Код: vbnet
1.
2.
<asp:Login ID="LoginControl" runat="server" OnAuthenticate="LoginControl_Authenticate" LoginButtonText="Выполнить вход" FailureText="Неудачная попытка входа." RememberMeSet="False" PasswordLabelText="Пароль" UserNameLabelText="Логин" RememberMeText="Запомнить меня" Width="230" TextLayout="TextOnTop">
   </asp:Login>-


Обработчик
Код: vbnet
1.
2.
3.
4.
5.
6.
    Protected Sub LoginControl_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles LoginControl.Authenticate
        Dim Authenticated As Boolean

        Authenticated = SiteSpecificAuthenticationMethod(LoginControl.UserName, LoginControl.Password)
        e.Authenticated = Authenticated
    End Sub


Что передает контрол в параметре?
Код: vbnet
1.
e As System.Web.UI.WebControls.AuthenticateEventArgs


Днамически созданный контрол без этого параметра отказывается работать.
...
Рейтинг: 0 / 0
Контрол Login созданный динамически, что передать в параметре для обработчика события?
    #39608825
it-sphere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, ни кто не сталкивался с такой проблемой или нужно развернуть подробнее?
Просьба не стесняться и задавать вопросы.
...
Рейтинг: 0 / 0
Контрол Login созданный динамически, что передать в параметре для обработчика события?
    #39608919
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
it-sphere,
Код вверху это не динамика, и работоспособно. Так?
Тогда зачем вам динамика? Где не рабочий код?
2. Что передается можно глянуть поставив бряк на строку в отладчике.
Imho.
...
Рейтинг: 0 / 0
Контрол Login созданный динамически, что передать в параметре для обработчика события?
    #39609214
it-sphere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Да, в верху рабочий код.
Динамика понадобилась по двум причинам:
1) в контроле, создаваемом в статике, отсутствует свойство перенаправления на страницу в случае валидной пары логин/пароль.
Это перенаправление задается в web.config. В динамически создаваемом контроле я могу задать страницу входа для удачной попытки авторизации DestinationPageUrl это и окупает весь банкет.
2) Изменение страницы входа понадобилось в связи с тем, что весь сайт генерится динамически, используя только одну физически существующую страницу. Возможно это утопия, но в части масштабирования пока все хорошо.
Petro123Где не рабочий код?
Как такового не рабочего кода не существует. Проблема в том, что контрол Login не реагирует на удачную авторизацию, т.к. ни чего в свою очередь не получает, а соответственно пишет о неправильном логин/пароль.
У статического контрола в событие передается некий загадочный параметр "е", с помощью которого в контрол передаются значения логина и пароля и возвращается результат проверки.
код события авторизации контрола Login
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
    Protected Sub LoginControl_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles LoginControl.Authenticate
        Dim Authenticated As Boolean

        Authenticated = SiteSpecificAuthenticationMethod(LoginControl.UserName, LoginControl.Password)
        e.Authenticated = Authenticated

    End Sub 


и код функции проверки
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    Private Function SiteSpecificAuthenticationMethod(ByVal NameUser As String, ByVal MuPassword As String) As Boolean
        'Protected Sub Buttonauthentication_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Buttonauthentication.Click

        Dim oledbCnn1 As New OleDbConnection("Provider=SQLOLEDB; " & System.Configuration.ConfigurationManager.ConnectionStrings("OrdersConnectSQL").ConnectionString)
        Dim StrSql As String = "select count(id_counteragent)  from counteragent where login_counteragent='" & NameUser & "' and password_counteragent='" & MuPassword & "';"
        Dim sql1 As String
        Dim cmd As New OleDb.OleDbCommand(StrSql, oledbCnn1)
        oledbCnn1.Open()
        sql1 = cmd.ExecuteScalar()
        oledbCnn1.Close()
        If sql1 = 0 Then
            SiteSpecificAuthenticationMethod = False
        Else
            SiteSpecificAuthenticationMethod = True
        End If

    End Function

См. break на загадочный параметр

Немного забегая в перед, скажу - подобный вариант воспроизводиться путем
Код: vbnet
1.
Dim Mu_Authenticated As New System.Web.UI.WebControls.AuthenticateEventArgs

Но результат отрицательный.

Создаем контрол из кода
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
 Dim LogIn_User As New Login ' Панель авторизации
    Sub authentication()

        With LogIn_User

            .CssClass = "authentication"
            .TextLayout = LoginTextLayout.TextOnLeft
            .TitleText = "Панель авторизации"
            .LoginButtonText = "Выполнить вход"
            .UserNameLabelText = "Логин"
            .PasswordLabelText = "Пароль"
            .RememberMeText = "Запомнить меня"
            .DisplayRememberMe = True ' управление выводом флажка запомнить меня
            .CreateUserText = "Регистрация"
            .CreateUserUrl = "/" & Parameter_City & "/registration"
            .PasswordRecoveryText = "Восстановление пароля"
            .PasswordRecoveryUrl = "/" & Parameter_City & "/recover"
            .PasswordRequiredErrorMessage = "Введите пароль"
            .UserNameRequiredErrorMessage = "Введите логин"

            .DestinationPageUrl = "/" & Parameter_City & "/order"
            .FailureText = "Не верный логин или пароль"

            AddHandler LogIn_User.Authenticate, AddressOf mu_LoginControl_Authenticate

        End With

        PlaceHolder_Content.Controls.Add(LogIn_User)


    End Sub 



Далее в процедуре вызванной событием контрола mu_LoginControl_Authenticate проводим проверку пары логин/пароль
и на сцене появляется загадочный параметр "е", с помощью которого собственно контрол Login узнает о результате проверки.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    Protected Sub mu_LoginControl_Authenticate()

        Dim oledbCnn1 As New OleDbConnection("Provider=SQLOLEDB; " & System.Configuration.ConfigurationManager.ConnectionStrings("OrdersConnectSQL").ConnectionString)
        Dim StrSql As String = "select count(id_counteragent)  from counteragent where login_counteragent='" & LogIn_User.UserName & "' and password_counteragent='" & LogIn_User.Password & "';"
        Dim sql1 As String
        Dim cmd As New OleDb.OleDbCommand(StrSql, oledbCnn1)
        oledbCnn1.Open()
        sql1 = cmd.ExecuteScalar()
        oledbCnn1.Close()
        If sql1 = 0 Then
            'Тут должно быть нечто, что лежит в е.Authenticated = false

        Else
            'Тут должно быть нечто, что лежит в е.Authenticated = true
        End If
      
    End Sub



Я могу с помощью приема, именуемого в народе "лом", выполнить авторизацию, но опасаюсь раскидать грабли в будущее.
Прием выглядит так
Код: vbnet
1.
FormsAuthentication.SetAuthCookie(LogIn_User.UserName, True)


и следующим эффектным броском
Код: vbnet
1.
Response.Redirect("отправить контрол Login со всей требухой в долгое эротическое путешествие")


В принципе работает и контрол LoginStatus это кушает и работает штатно, но мерещатся грабли.
Вопрос открыт, что таиться в параметре е ?
Как сделать по другому и грамотно?
...
Рейтинг: 0 / 0
Контрол Login созданный динамически, что передать в параметре для обработчика события?
    #39609228
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
it-sphereвесь сайт генерится динамически, используя только одну физически существующую страницу. Возможно это утопия,да.Утопия.
Не люблю динамику, поэтому даже мыслей нет)).
Удачи!
...
Рейтинг: 0 / 0
Контрол Login созданный динамически, что передать в параметре для обработчика события?
    #39609260
it-sphere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Вопрос задан не про "Утопию".
Прошу высказываться по существу заданного вопроса или не отрывать от дела.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Контрол Login созданный динамически, что передать в параметре для обработчика события?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]