我正在使用ASP.net MVC4模板的内置SimpleMembership,并希望创建一个管理面板来重置用户群上的密码和类似操作。
我使用SecurityGuard.MVC4 nuget作为起点,并在大多数操作中获得NotSupportedException。 SecurityGuard使用控制器的Membership属性在SimpleMembershipProvider上调用诸如GetAllUsers(),GetUser()和ResetPassword()之类的方法,并且它们都抛出NotSupportedException。从文档来看,这似乎是设计的:
SimpleMembershipProvider.GetAllUsers
注意:如果已使用初始化SimpleMembershipProvider类 调用WebSecurity.InitializeDatabaseConnection()方法,这个 方法不受支持,并将抛出NotSupportedException 例外。但是,如果WebSecurity.InitializeDatabaseConnection() 方法尚未调用,如果您已将站点配置为 使用标准的ASP.NET成员资格提供程序,传递此方法 通过标准会员提供者。
我错过了什么?看来我需要选择使用WebSecurity来处理WebSecurity.CreateUser()之类的标准内容并直接使用提供程序吗?
我可以解决这个问题,但我很担心为什么我不能同时解决这两个问题?
答案 0 :(得分:6)
SimpleMembership
是故意设计的......好吧,简单。 WebSecurity
使用SimpleMembership
,并使用ExtendedMembershipProvider
派生的SimpleMembership
类。
基本上,SimpleMembership不实现WebSecurity中不存在的任何功能,而GetAllUsers就是其中之一。是的,这是设计的。
您有几种选择。所有这些都是解决方法。