【问题标题】:ASP.NET Membership AlternativesASP.NET 成员资格替代方案
【发布时间】:2010-08-24 21:27:24
【问题描述】:

我一直远离 asp.net 会员,因为它看起来很臃肿,而且(当时)无法测试。特别是在 asp.net MVC 的情况下,是否有人使用替代解决方案来为用户分配角色,并为登录用户存储一些附加信息?有什么推荐吗?自己开发,只实现你需要的功能是不是很疯狂?

【问题讨论】:

  • 如果您需要替代方案,那么您可能有一些原因...您能与我们分享吗?您想使用的 asp.net 会员资格中缺少什么?
  • 我不确定它是如何“臃肿”的。如果有的话,就是角色方面有点倾斜。
  • 可以在aspnet_regsql生成的表中添加列,效果很好。然后,如果需要,您可以参考实体模型中的表。这样,您仍然可以使用 ASP.NET 的成员资格提供程序,只要它适合您,但您也可以从您存储的其他信息中受益。
  • 你在用什么?有许多解决方案可以扩展您可能已经在使用的其他工具。例如,如果您使用 NHibernate 进行数据访问:stackoverflow.com/questions/512922/…
  • 自己动手并不疯狂。在我看来,使用 ASP.NET 成员比编写自己的成员更麻烦。编写完成后,可以轻松地在其他项目中重复使用它。

标签: asp.net-mvc asp.net-membership


【解决方案1】:

ASP.NET 成员使用提供者模型进行存储。 SqlMembershipProvider 从抽象 MembershipProvider 类继承加密/散列密码功能。但如果需要,您也可以从 MembershipProvider 继承并在自定义提供程序中获取该功能。

如果您使用 SqlMembershipProvider,您将获得一个功能齐全的成员数据库,其中包含完整的密码管理(检查、更改、重置、无效密码尝试)和用户管理(CRUD 操作、锁定用户)。

所有这些都在 API 级别。您可以针对 API 创建任何您想要的 UI。

使用 SqlMembershipProvider 不需要您使用 Roles Provider 或 Profile Provider 或任何其他东西,您可以在不影响成员资格的情况下为这些东西滚动自己的东西。至少我会建议使用经过充分测试的 SqlMembershipProvider 作为基本内容的安全核心。

【讨论】:

  • 我想问题在于何时需要扩展它。或者,您现有的架构与 SqlMembershipProvider 数据库不匹配。
  • 扩展 SqlMembershipProvider 可能会有问题。我个人在主要在 Oracle 上运行的应用程序中使用 SqlMembershipProvider。这些表只是放在他们自己的小数据库中,而不用担心主要的业务数据库,它似乎对我来说效果很好。
【解决方案2】:

我已经成功地将DotNetOpenAuth 实现为会员和角色提供者。它不是一个完整的实现,但可以处理最常见的场景。

他们提供了 VS 模板来帮助您入门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多