SimpleMembershipProvider в MVC4 создает исключение NotSupportedException при инициализации
Я использую встроенный SimpleMembership шаблона ASP.net MVC4 и хочу создать панель администратора для сброса паролей и аналогичных операций на базе пользователей.
Я использую SecurityGuard.MVC4 nuget в качестве отправной точки и получаю NotSupportedException для большинства действий. SecurityGuard использует свойство Membership контроллера для вызова таких методов, как GetAllUsers(), GetUser() и ResetPassword() в SimpleMembershipProvider, и все они генерируют исключение NotSupportedException. Из документации видно, что это по замыслу:
SimpleMembershipProvider.GetAllUsers
Примечание. Если класс SimpleMembershipProvider был инициализирован с использованием вызова метода WebSecurity.InitializeDatabaseConnection(), этот метод не поддерживается и вызовет исключение NotSupportedException. Однако, если метод WebSecurity.InitializeDatabaseConnection() не был вызван, и если вы настроили свой сайт для использования стандартного поставщика членства ASP.NET, этот метод передается стандартному поставщику членства.
Что мне не хватает? Кажется, мне нужно выбрать между использованием WebSecurity для стандартных вещей, таких как WebSecurity.CreateUser(), и непосредственным использованием поставщика?
Я могу обойти это, но я в первую очередь смущен, почему я не могу получить и то и другое?
1 ответ
SimpleMembership
намеренно разработан, чтобы быть.. ну, просто. WebSecurity
использования SimpleMembership
и использует ExtendedMembershipProvider
класс это SimpleMembership
происходит от.
По сути, SimpleMembership не реализует никаких функций, которых нет в WebSecurity, и GetAllUsers является одной из них. Да, это по замыслу.
У вас есть несколько вариантов. Все они обходные пути.
- Вы можете просто сделать свой собственный запрос, чтобы получить все пользователи.
- Вы можете создать своего собственного провайдера членства, полученного из SimpleMembership, и реализовать эти функции
- Вы можете вернуться к SqlMembershipProvider (или универсальным провайдерам) (но избегайте WebSecurity)