#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