使用ASP.NET MVC 4和System.Web.Providers向网站添加其他用户信息

时间:2012-12-01 08:04:01

标签: asp.net asp.net-mvc asp.net-membership

我已经使用System.Web.Providers设置了ASP.NET MVC 4,现在我想添加更多用户信息,如地址,生日等。

我还想将提供商的现有用户数据与帖子联系起来,以便每个帖子都有来自提供商的作者。

我必须这样,当用户创建帖子时,选择该帖子时,所有关于用户的信息都必须(懒惰地)可用。

我可能正在考虑让一个User类包含标准MVC模板项目中的UserProfile类(似乎与HTTP登录一起使用),以及来自提供者的aspnet_users,但是我不太确定如何解决这个问题。

这样做的常见方法是什么?

2 个答案:

答案 0 :(得分:1)

我建议选择Providers。这些可以在 ASP.NET 中使用很长时间,并且仍在使用。它们的实现对于( WebForms MVC )都是一样的,所以我建议阅读这篇关于它们的综合教程

Profile功能正是用户特定信息的位置。它可以轻松扩展,并代表Membership的扩展点。我们正在使用我们的一个Profile类:

public class ProjectProfile : ProfileBase 
{
    // TODO custom properties 
}

在web.config中配置

<profile defaultProvider="ProjectProfile" 
         inherits="MyLibrary.ProjectProfile, MyLibrary">
  <providers >
  <clear/>
  <add name="ProjectProfile" type="MyLibrary.ProjectProfileProvider, MyLibrary" />
  </providers>
</profile>

因此,System.Web.HttpContext.Current.Profile as ProjectProfile拥有所需的信息。

答案 1 :(得分:1)

link应该为您提供实施ProfileProvider的所有信息

正如帖子(他们使用第三个选项)以及this answer中所建议的那样,您应该考虑实施自己的逻辑以将配置文件绑定到当前活动的用户

我使用个人资料类并扩展MembershipUser&#39;以实现我的课程。通过这种方式,我可以使用类似的东西访问它:

var user = Membership.GetUser();
var profile = user.Profile;