将表单身份验证用户与模型关联

时间:2011-03-31 07:32:39

标签: c# asp.net-mvc asp.net-mvc-3 authentication

我正在为.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; }
}

请注意“作者”字段。如何将用户链接到它?

2 个答案:

答案 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中进行。