3

我在 mvc4 应用程序中使用简单的成员资格提供程序,我可以看到为此生成的五个表。我可以看到用户名和密码存储在不同的表中。我想用一些自定义字段将用户名和密码保存在同一张表上。所以我通过继承 ExtendingMembership Provider 创建自己的 Membership Provider。我对此有一些疑问。

  1. 我的应用程序使用 3 层架构(BLL、DAL 和表示层)并为帐户和管理员创建了 2 个区域。所以在这里我不知道在哪里放置我的会员提供者,然后通过应用程序的每个部分访问它以使用授权属性。
  2. 我正在重写此方法 CreateUserAndAccount,我是否需要实现自己的逻辑来将用户注册数据保存到数据库。但是我发现只传递了一些参数,如何使用字典对象将剩余的自定义字段从视图传递到控制器?

    public override string CreateUserAndAccount(string userName, string password, bool     requireConfirmation, IDictionary<string, object> values)
    {
        throw new NotImplementedException();
    }
    
4

2 回答 2

1

至于问题#2:看看我这个周末问的这个问题...... SimpleMemership CreateUserAndAccount Customization - 特别是我在问题中链接的博客文章,因为它对扩展 SimpleMembership 非常有帮助。

于 2013-01-28T15:32:33.993 回答
0

对于#1:ExtendedMembershipProvider根据需要使用 DI 注入 BLL 层。在您的 DI 配置中将其映射到 Membership.Provider。这实际上是一个 DAL,不应包含业务逻辑。最好还是围绕 WebSecurity 创建一个外观并将其注入到您的 BLL 中。

对于#2:是的,ExtendedMembershipProvider接口使用键/值对字典,可用于使用您选择的实现将用户配置文件属性映射到数据库模式。

SimpleMembershipProvider通过将字典键映射到相应的数据库列来做到这一点。创建记录后,您可以UserProfile直接使用 EF 和模型管理用户数据。

实现自己ExtendedMembershipProvider的工作量很大,我不建议这样做。与遗留迭代相比,该SimpleMembershipProvider架构相对干净,我认为您需要一个很好的理由来将密码列移动到用户表,而不是仅仅配置SimpleMembershipProvider为使用您自己的架构,并将密码留在正确的位置。

于 2013-10-03T23:03:59.217 回答