Теперь у меня авторизация пользователя работает в несколько разумном порядке. Самым большим препятствием, которое нужно преодолеть, является то, что можно использовать классы членства, даже если я не использую аспект членства в профиле. Легко получить имя пользователя и выполнить Membership.GetUser (UserName). Затем вы можете сделать много вещей, таких как разблокировать, одобрить / отклонить, изменить пароль и изменить пароль, вопрос / ответ ... все, что мне нужно.
Вот основы:
'get current logged in user
Dim currentUser As MembershipUser = Membership.GetUser()
'get current logged in user name
Dim userName = currentUser.UserName
'get current user email
Dim userEmail = currentUser.Email
'get a user to edit
Dim editingUser = Membership.GetUser(UserName)
'set the user email
editingUser.Email = newEmail
Membership.UpdateUser(editingUser)
‘unlock user
editingUser.UnlockUser()
‘disapprove user
editingUser.IsApproved = False
Membership.UpdateUser(editingUser)
‘approve user
editingUser.IsApproved = True
Membership.UpdateUser(editingUser)
‘change pw
editingUser.ChangePassword(oldPw, newPw)
и это в основном все, что есть это
Насколько я могу судить, вы используете SqlMembershipProvider в качестве реализации поставщика членства. Я настоятельно рекомендую вам ознакомиться с некоторыми методами классов MembershipUser и MembershipProvider (например, CreateUser и т. Д.), Чтобы достичь того, что вы пытаетесь вместо работы с базовыми таблицами базы данных, используемыми для реализации.
Вы также можете ознакомиться с этой статьей , чтобы получить более подробное введение в членство, роли и роли ASP.NET Профили провайдеров.
Посмотрите этот проект на CodePlex: Стартовый комплект для членства в ASP.Net MVC
Я не знаю "передовой опыт", но я бы сделал это так (и как это вроде написано в " Professional ASP.NET MVC 1.0 "):
У вас должны быть собственные (или стандартные) ProfileProvider и MembershipProvider, чтобы это работало.
Создайте контроллер, который обрабатывает все действия по управлению участниками, например. MemberAdminController
В этом контроллере должен быть указан атрибут Authorize [Roles = "Administrator"], чтобы все действия в этом контроллере обрабатывались, только если пользователь находится в роли администратора.
Теперь вы можете создавать представления и действия CRUD как бы вы хотели использовать только этот контроллер.