我正在为.NET MVC3项目使用表单身份验证。我也在使用EntityFramework。用户处理非常简单。虽然问题是,如何将用户与模型相关联?
假设我有一个简单的帖子模型:
public class Post
{
public int ID { get; set; }
public string Title { get; set; }
public string Text { get; set; }
public DateTime Updated { get; set; }
//public MembershipUser Author { get; set; }
}
请注意“作者”字段。如何将用户链接到它?
答案 0 :(得分:1)
我正在使用nHydrate和EF作为MVC3项目。在努力让MembershipUser和MembershipProvider使用nHydrate框架之后,我突然意识到我真的没有特别需要使用ASP.NET Membership ...的东西。最后,在我正在编写的数据层中包含我自己的身份验证方法要简单得多。
所以,FWIW,你可能值得花些时间问自己为什么需要使用内置的会员资格......这些东西。如果你没有加入遗留系统,你可能会发现它并没有给你带来太大的收获。
答案 1 :(得分:1)
我假设您的Post
对象是视图模型。
创建一个展平的User
对象,其中包含有关视图用户的所需信息。如果你正在制作一个帖子视图,比如stackoverflow上的那个,那么这可能看起来像:
public class User{
public string DisplayName {get;set;}
public string AvatarUrl{get;set;}
public int Reputation {get;set;}
public int GoldBadges{get;set;
public int SilverBadges{get;set;
public int BronzeBadges{get;set;
}
然后,您只需将该属性添加到视图模型中。
在您进行身份验证(如登录)的情况下,您可能需要单独的输入模型,例如:
public class LogonModel{
public string Username{get;set;}
public string Password{get;set;}
public bool RememberMe{get;set;}
}
从输入模型到MembershipUser
的所有绑定都可以在ModelBinder中进行,您的实际业务逻辑应该在Controller中进行。