我已经使用System.Web.Providers设置了ASP.NET MVC 4,现在我想添加更多用户信息,如地址,生日等。
我还想将提供商的现有用户数据与帖子联系起来,以便每个帖子都有来自提供商的作者。
我必须这样,当用户创建帖子时,选择该帖子时,所有关于用户的信息都必须(懒惰地)可用。
我可能正在考虑让一个User类包含标准MVC模板项目中的UserProfile
类(似乎与HTTP登录一起使用),以及来自提供者的aspnet_users
,但是我不太确定如何解决这个问题。
这样做的常见方法是什么?
答案 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;