2

我正在使用 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() 等标准内容和直接使用提供程序之间进行选择?

我可以解决这个问题,但我主要对为什么我不能同时获得两者感到困惑?

4

1 回答 1

6

SimpleMembership被故意设计成……嗯,简单。 WebSecurity使用SimpleMembership,并使用派生自的ExtendedMembershipProvider类。SimpleMembership

本质上,SimpleMembership 没有实现 WebSecurity 中不存在的任何功能,GetAllUsers 就是其中之一。是的,这是设计使然。

你有几个选择。所有这些都是解决方法。

  1. 您可以简单地进行自己的查询以获取所有用户。
  2. 您可以创建自己的从 SimpleMembership 派生的 Membership 提供程序并实现这些功能
  3. 您可以返回到 SqlMembershipProvider(或 Universal Providers)(但避开 WebSecurity)
于 2012-10-10T14:14:12.080 回答