我需要从控制器中获取应用程序的MembershipProvider的实例。我有一个自定义成员身份实现,它具有描述登录用户的自定义User属性。问题的核心是我需要检索此User对象。
我的应用程序已完成MembershipProvider的骨干实现,但它工作正常并正确验证尝试登录或创建新帐户的用户。因此,我保留了为.NET .NET MVC应用程序开箱即用的AccountController的默认实现。
如果您需要更多细节,我很乐意提供。
答案 0 :(得分:4)
我猜你的MembershipProvider是在web.config中注册的。如果是这样,您可以使用静态属性System.Web.Security.Membership.Provider
。
答案 1 :(得分:1)
如果在Visual Studio中创建新的ASP.NET MVC项目,它将自动为您创建一个名为AccountController
的控制器。此控制器提供了一个示例,说明如何访问ASP.NET MVC中的MembershipProvider。
简而言之,它通过将MembershipProvider隐藏在IMembershipService
接口后面来促进依赖注入(DI)和松散耦合。
班级AccountMembershipService
将IMembershipService
实施为MembershipProvider
的{{3}}。
您可以将IMembershipService
的实例注入任何需要它的控制器,就像AccountController
那样。
答案 2 :(得分:0)
我同意Mike的看法,这是执行此操作的标准方法,但为了减轻每次必须转换提供程序的困惑,您可以创建一个所有控制器继承并具有受保护属性的基本控制器一次投射它的吸气剂。这将实现更好的代码重用,如果您更改了会员资格提供者,您只需要在一个地方完成。