改进的MembershipProvider解决方案

ASP.NET开发中,用户管理是一个常见且重要的需求。随着技术的发展,出现了多种用户管理方案。SimpleMembershipProvider是ASP.NET MVC4中引入的一种用户管理方案,但它存在一些局限性。本文将介绍BetterMembership.Net库,它旨在解决SimpleMembershipProvider的局限性,并提供一种更灵活的用户管理方案。

BetterMembership.Net库简介

BetterMembership.Net库是一个开源项目,它扩展了SimpleMembershipProvider的功能,使其能够与ExtendedMembershipProvider接口兼容。这意味着,使用BetterMembership.Net库,可以利用ExtendedMembershipProvider的新特性,同时仍然可以使用现有的用户管理工具进行用户管理,如ASP.NETWeb Site Administration Tool。

BetterMembership.Net库具有以下特点:

  • 支持SQL Server、SQL Compact和SQL Azure数据库。
  • 与EntityFramework和代码优先(Code-first)模式兼容。
  • 使用清晰的数据库架构。
  • 能够与现有的用户表一起工作。
  • 可以与现有的用户管理工具(包括WSAT)集成。
  • 支持初始化多个提供程序实例。
  • 支持外部认证提供者。
  • 提供可定制的用户名/电子邮件/密码验证。

BetterMembership.Net库通过一些反射机制,在运行时调用WebSecurity.InitializeDatabaseConnection方法时,替换默认的提供程序。这使得可以配置和使用多个提供程序实例,这对于需要多种认证方案的复杂应用程序非常有用,例如在Sitecore中。

为了实现这一点,BetterMembership.Net库在其Initialize方法中调用WebSecurity.InitializeDatabaseConnection,使得提供程序完全自包含且向后兼容。这个特性可以为代码优先模式禁用,但它确实允许用户通过Visual Studio的WSAT工具或其他基于提供程序的接口进行管理。

BetterMembership.Net库实现了SimpleMembershipProvider中缺失的以下方法:

  • CreateUser
  • GetUser
  • GetUserNameByEmail
  • FindUserByUserName
  • FindUserByEmail
  • GetAllUsers
  • FindUsersByName
  • FindUsersByEmail
  • UnlockUser
  • ResetPassword

用户在线状态标志(userIsOnline)被忽略,但将来可能会实现。

可以通过Nuget安装BetterMembership.Net库。在Package Manager Console中运行以下命令:

PM> Install-Package BetterMembership.Net
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485