0

当我们基于 MembershipProvider、MembershipUser 和 RoleProvider 等创建自定义会员时,我们遇到了很多障碍和绊脚石。

我们有许多有趣的要求,而会员提供者似乎并没有帮助我们实现这些要求:

  • 用户可能有多个登录。
  • 用户没有直接的用户名(但可能有一个有用户名的登录名)。
  • 用户有一个唯一的引用(当前是一个自动递增的主键)。

为了实现这一点,我们有两个表: 与登录具有一对多关系的用户。

这实际上意味着我们有一个用户(在假设的世界中)可以通过其 Active Directory 帐户自动登录(如果可能),也可以通过 OpenID 或用户名/密码组合登录。我们还会有一些可能没有 AD 帐户的用户。

我最初尝试通过创建来重新利用成员资格类: - CustomMembershipProvider - CustomMembershipUser - CustomRolesProvider

但是我与它的所有战斗都让我黑眼圈和瘀伤,它真的,真的想要一个用户名!

我是否以最好的方式解决了这个问题?我应该从头开始而不继承任何东西吗?我应该基于 IProvider 类吗?或者也许是 GenericPrincipal 和 GenericIdentity 类?还是我只是缺少 MembershipProvider 的一些东西?

我想让最终的编程体验与开箱即用的会员资格一样简单,例如

Membership.GetCurrentUser();

并避免不太简单的终端编码器体验......

4

1 回答 1

0

我有类似的经验,并决定为所有用户提供一个通用的成员资格以进行角色检查等,并将其映射到不同的 AuthenticationProviders(OpenID、AD、Membership Providers 等),以便对他们进行不同的身份验证。

于 2009-10-15T15:53:15.543 回答