将额外信息与ASP.NET MVC成员关联

Dko*_*ong 14 asp.net asp.net-mvc asp.net-membership

我不确定我是否应该与MVC做任何不同,但我很好奇在使用成员资格提供程序时,为ASP.NET用户帐户添加额外信息的建议方法是什么?还有如何将此用途与其他实体相关联.

通常我不打扰配置文件,并且更喜欢向仅引用USERID的表添加额外信息.ASP.NET MVC方法的好/坏/可接受,或者替代方案是什么?

Dan*_*plo 10

这是一个很好的问题,也是我一直在努力的问题.我认为有三种基本方法;

  1. 使用配置文件提供程序 - 这样可以轻松添加属性,但很容易执行生成用户表等操作,尤其是在需要应用过滤器/搜索时.API只是没有削减它.

  2. 添加新表(或扩展现有表),然后加入此表.然后,您需要编写自己的方法来获取自定义数据.

  3. 编写自己的成员资格提供程序,扩展MembershipProvider类.

对于我的上一个项目,我使用了后一种方法 - 我写了一个非常quck的SQL提供程序,它只实现了创建用户,身份验证和更改密码所需的基本要素.对于其他虚拟方法,我只是扔了一个NotImplementedException.

然后我添加了一个新类,它添加了我需要的额外属性并使其可以通过传入标准来实例化MembershipUser.像这样的东西:

public static CustomMember GetMember(MembershipUser user)
{
    // Get your custom member
}
Run Code Online (Sandbox Code Playgroud)

这样你可以在大多数情况下使用标准的MembershipUser,但如果你需要获得有关当前用户的更多细节,你可以这样做:

MembershipUser user = Membership.GetUser();
CustomMember member = CustomMember.GetMember(user);
Run Code Online (Sandbox Code Playgroud)

不过,我有兴趣看看其他人的方法是什么.