我在mvc4应用程序中使用简单的成员资格提供程序,我可以看到为此生成的五个表。在那我可以看到用户名和密码存储在不同的表上。我想在一些自定义字段的同一个表上保存用户名和密码。所以我通过继承ExtendingMembership Provider来创建自己的会员提供者。我对此有一些疑问。
我重写了这个方法CreateUserAndAccount,我是否需要实现自己的逻辑来保存用户注册数据到数据库。但我发现只传递了一些参数,如何使用字典对象将剩余的自定义字段从视图传递给控制器?
public override string CreateUserAndAccount(string userName, string password, bool requireConfirmation, IDictionary<string, object> values)
{
throw new NotImplementedException();
}
答案 0 :(得分:1)
关于问题#2:看看这个问题我本周末问过... SimpleMemership CreateUserAndAccount Customization - 特别是我在问题中链接的博客文章,因为它对扩展SimpleMembership非常有用。
答案 1 :(得分:0)
对于#1:根据需要使用DI将ExtendedMembershipProvider
注入BLL图层。将它在DI配置中映射到Membership.Provider。这实际上是一个DAL,不应包含业务逻辑。最好还是围绕WebSecurity创建一个外观并将其注入到BLL中。
对于#2:是的,ExtendedMembershipProvider
接口使用键/值对字典,可以使用您选择的实现将用户配置文件属性映射到数据库模式。
SimpleMembershipProvider
通过将字典键映射到相应的数据库列来完成此操作。创建记录后,您可以直接使用EF和UserProfile
模型管理用户数据。
实现自己的ExtendedMembershipProvider
是很多工作,我不推荐它。与传统迭代相比,SimpleMembershipProvider
模式相对简洁,我认为您需要将密码列移动到用户表的原因,而不是仅仅将SimpleMembershipProvider
配置为使用您自己的模式,并将密码保留在正确所属的位置。