如何避免使用会员提供商?

y.s*_*hyk 8 c# asp.net security membership-provider asp.net-mvc-3

我们目前正在为瘦客户端簿记应用程序构建架构.它应遵循两个主要要求:

  1. 应用程序应具有模块设计.每个模块都可以拥有(并且实际上拥有)自己的角色系统.
  2. 以后的应用程序应适合在不同的机器上使用不同的数据库运行.

我们认为Asp.NET MVC 3是适合这项任务的平台.为了管理应用程序数据,我们选择了最新版本的Entity Framework - 它的批量数据提供程序和Code First功能可以为我们节省大量时间.

我们纠结的部分是用户/角色管理系统.我们应该有一些全局管理部分用于添加用户并授予他们访问模块的权限(只有全局管理员可以将用户添加到系统,不支持"街头人"注册)并且每个模块都有自己的管理部分和自己的管理员和角色.我们已经有数据模型以适当的方式存储我们需要的所有内容,但不知道如何从应用程序正确访问这些数据.

目前,我们看到两种可能的方法来解决此问题:

  1. 根据我们的DAL编写自定义成员资格和角色提供程序.我们团队中的任何人都没有这样做过,所以我们不确定这种方式是否值得.会员提供商不能提供与应用程序需求一样多的灵活性,因此需要一些紧急情况.
  2. 挖掘一些过时的书籍,了解在创建成员资格提供者之前如何组织网站管理系统.

这两种方式都不优雅,对我们来说并不明显,而且选择哪种方式也不是一个简单的问题.我们也相信它可以是其他解决方案(原因可能会影响架构).因此,我们很高兴看到任何与此问题相关的建议.

y.s*_*hyk 1

好吧,最后我们决定从头开始编写,看起来更容易

  • 添加自己的 IPrincipal 实现。IsInRole() 方法的附加字段和完全不同的逻辑,以避免编写自己的属性。
  • 将 Global.ajax 事件中的 IPrincipal 分配给用户。

这一点也不难。现在我们拥有了我们想要的所有灵活性。没有提供者参与。