Как получить экземпляр MembershipProvider приложения asp .net mvc из контроллера? - PullRequest
1 голос
/ 28 февраля 2010

Мне нужно получить экземпляр MembershipProvider приложения из контроллера. У меня есть пользовательская реализация членства, которая имеет пользовательское свойство User, которое описывает вошедшего в систему пользователя. Суть проблемы заключается в том, что мне нужно получить этот объект User.

В моем приложении реализована скелетная реализация MembershipProvider, но он отлично работает и правильно проверяет пользователей, которые пытаются войти в систему или создать новую учетную запись. Из-за этого я сохранил стандартную реализацию AccountController, которая поставляется из коробки для приложения ASP .NET MVC.

Если вам нужны подробности, я был бы рад предоставить их.

Ответы [ 3 ]

4 голосов
/ 28 февраля 2010

Я предполагаю, что ваш MembershipProvider зарегистрирован в web.config. Если это так, вы можете использовать статическое свойство System.Web.Security.Membership.Provider.

1 голос
/ 28 февраля 2010

Если вы создадите новый проект ASP.NET MVC в Visual Studio, он автоматически создаст для вас контроллер с именем AccountController. Этот контроллер предоставляет пример того, как вы должны получить доступ к MembershipProvider в ASP.NET MVC.

Короче говоря, он способствует внедрению зависимостей (DI) и слабой связи, скрывая членство MembershipProvider за интерфейсом IMembershipService.

Класс AccountMembershipService реализует IMembershipService как Адаптер из MembershipProvider.

Вы можете внедрить экземпляр IMembershipService в любой контроллер, который нуждается в нем, так же, как это делает AccountController.

0 голосов
/ 01 марта 2010

Я согласен с Майком, что это стандартный способ сделать это, но чтобы уменьшить путаницу необходимости каждый раз приводить ваш провайдер, вы можете создать базовый контроллер, от которого наследуются все ваши контроллеры, и иметь защищенное свойство получатель, который разыгрывает его один раз. Это обеспечит лучшее повторное использование кода, и если вы когда-нибудь смените поставщика услуг, вам нужно будет сделать это только в одном месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...