ASP.NET会员资格的替代方案

8

我一直避免使用asp.net membership,因为它看起来很臃肿,而且(当时)无法进行测试。在特定的asp.net MVC情况下,是否有人使用替代方案来分配用户角色,并存储已登录用户的一些额外信息?有什么建议吗?自己开发实现所需功能是否疯狂?


如果你需要另一种选择,那么你可能有一些理由......你能和我们分享一下吗?在 asp.net 成员资格中缺少什么是你想要使用的? - Łukasz W.
3
我不确定它为什么被称作“臃肿”。如果有的话,它在角色方面有些单薄。 - Greg
你可以在aspnet_regsql生成的表中添加列,它能够正常工作。如果需要的话,你可以在实体模型中引用这些表。这样,你仍然可以使用ASP.NET的成员资格提供程序,只要它对你有用,但你也可以从你存储的额外信息中受益。 - Andrew
你使用的是什么?有很多解决方案可以扩展你已经在使用的其他工具。例如,如果你正在使用 NHibernate 进行数据访问:https://dev59.com/X3RB5IYBdhLWcg3wyqEd - synhershko
自己编写代码并不是疯狂的行为。在我看来,使用ASP.NET成员资格比编写自己的代码更麻烦。一旦你编写了它,就可以轻松地在其他项目中重复使用。 - Necros
2个回答

3
ASP.NET会员资格使用提供程序模型进行存储。SqlMembershipProvider继承了抽象MembershipProvider类中的加密/哈希密码功能。但是,如果您想要,在自定义提供程序中也可以从MembershipProvider继承并获得该功能。
如果您使用SqlMembershipProvider,则可以获得完全可用的会员资格数据库,包括完整的密码管理(检查、更改、重置、无效密码尝试)和用户管理(CRUD操作、锁定用户)。
所有这些都在API级别上。您可以根据API创建任何所需的UI。
使用SqlMembershipProvider不需要您使用Roles Provider或Profile Provider等其他内容,而且您可以为这些内容定制自己的内容,而不影响会员资格。至少,我建议将经过充分测试的SqlMembershipProvider作为基本安全性的核心。

我猜问题在于当你需要扩展它时。或者,你现有的模式不匹配SqlMembershipProvider数据库。 - Roco72
扩展SqlMembershipProvider可能会有问题。个人在一个主要运行在Oracle上的应用程序中使用SqlMembershipProvider。这些表只是坐在自己的小数据库中,不必担心主业务数据库,对我来说似乎很好用。 - Greg

0

我已经成功地将DotNetOpenAuth实现为成员资格和角色提供程序。虽然它不是完整的实现,但可以处理大多数常见情况。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接