как отобразить текст сбоя, если роль пользователя loggedin не найдена …?

#asp.net #vb.net #visual-studio #login #roleprovider

#asp.net #vb.net #visual-studio #аутентификация #roleprovider

Вопрос:

Как отобразить текст ошибки входа в систему, если идентификатор пользователя, входящего в систему, отличается от идентификатора роли поставщика…

я использую следующий код для аутентификации роли пользователя во время входа в систему

 Protected Sub Login3_LoggingIn(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LoginCancelEventArgs) Handles Login3.LoggingIn
        Dim user As TextBox = Me.Login3.FindControl("UserName")
        If Roles.IsUserInRole(user.Text, "Vendors") Then
            Login3.DestinationPageUrl = ("~/vendors/select_service.aspx")
        Else
            Login3.DestinationPageUrl = ("~/login.aspx")
        End If
    End Sub
  

Комментарии:

1. Проблема с этим кодом заключалась в том, что /// это подтвердит только пользователя с ролью поставщика для доступа к файлу default.aspx, если я войду в систему с учетными данными роли администратора, тогда ошибка не будет отображаться… но если я наберу напрямую… default.aspx тогда к этой странице будут обращаться поставщики и администраторы …. но я хочу, чтобы только роль пользователя поставщика должна иметь доступ к странице

Ответ №1:

на мой взгляд, цели ролей — это не вход в систему. для входа в систему необходимо подтвердить учетные данные, такие как имя пользователя или пароль.

Роли, на мой взгляд, следует использовать для определения, есть ли у пользователя доступ к определенному разделу вашего веб-сайта / приложения.

чтобы отобразить сообщение, рассмотрите возможность добавления метки и изменения свойства label text.

Ответ №2:

В моей ситуации я хотел аутентифицировать пользователей, но если у них не было ролей, связанных с их учетной записью, отмените вход в систему и отобразите сообщение. Основываясь на предложении Флавио использовать метку, это то, что я придумал. (LoginInput — это мой LoginControl)

 Protected Sub LoginInput_LoggingIn(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LoginCancelEventArgs)

    Dim a As System.Web.UI.WebControls.Login = CType(sender, System.Web.UI.WebControls.Login)

    LoginError.Visible = False

    If (Membership.ValidateUser(a.UserName, a.Password)) Then
        If (Roles.GetRolesForUser(a.UserName).Count = 0) Then
            LoginError.Text = "Your account does not have permission to access the system."
            LoginError.Visible = True
            e.Cancel = True
        End If
    End If

End Sub