帮助实现简单/自定义MembershipProvider

时间:2011-03-24 20:44:31

标签: asp.net-mvc asp.net-mvc-3 membership-provider code-first ef-code-first

我一直关注Steve Sandersons的MVC2书,并实施了一个简单/自定义的MembershipProvider。您不会对有效用户进行硬编码。我的问题是如何根据我的“Profiles”SQLServer表进行验证?

PS - 我正在使用EF 4.1 Code First

请参阅以下内容:

public class Profile
{
    [Key]
    public int UserId { get; set; }

    [Required]
    public string UserName { get; set; }

    [Required]
    public string Password { get; set; }
}

public class SimpleMembershipProvider : MembershipProvider
{
    private static List<Profile> Members = new List<Profile>
    {
        new Profile { UserId = 1, UserName = "admin", Password = "qwerty123" }
    };

    public override bool ValidateUser(string username, string password)
    {
        return Members.Exists(m => (m.UserName == username) && (m.Password == password));
    }

1 个答案:

答案 0 :(得分:1)

您需要制作用户安全数据表。这是开始的2个表:

UserNames表:

UserID    UserName
1         alex
2         john

UserSecurityDetails表:

UserID    Password
1         qwerty123
2         password1

然后,您希望围绕这些表制作模型(制作UserObjectContext)。 userID之间应该存在关联。

然后您可以在验证方法中使用这些模型。类似的东西:

public override bool ValidateUser(string username, string password)
{
    using(var context = new UserObjectContext())
    {
        return context.UserNames.Any(u => u.UserName == username && u.UserSecurityDetails.Password == password);
    }
}