个性化SimpleMembership提供程序

3

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

  1. My application uses 3-tier architecture(BLL, DAL and Presentation layers) and created 2 areas for account and admin. So here i dont know where to place my membership provider which are then accessed with every part of application for using Authorize Attribute.
  2. I am overriding this method CreateUserAndAccount, Do i need to implement my own logic for saving user registration datas to database. But i find only some parameters are passed, how to pass my remaining custom fields from view to the controller using the dictionary object ?

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

1

0

对于问题#1:使用DI将ExtendedMembershipProvider注入到您的BLL层中,如有需要,请在DI配置中将其映射到Membership.Provider。这实际上是一个DAL,不应包含业务逻辑。更好的做法是创建一个围绕WebSecurity的Facade,并将其注入到您的BLL中。

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

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

实现自己的ExtendedMembershipProvider需要大量工作,我不建议这样做。与旧版本相比,SimpleMembershipProvider模式相对清晰,我认为您需要非常好的理由才能将密码列移动到用户表中,而不仅仅是配置SimpleMembershipProvider以使用您自己的模式,并将密码留在正确的位置。


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