【问题标题】:Help implementing simple / custom MembershipProvider帮助实现简单/自定义 MembershipProvider
【发布时间】:2011-03-24 20:44:30
【问题描述】:

我一直在关注 Steve Sandersons MVC2 的书,并实现了一个简单/自定义的 MembershipProvider。您不会认为有效用户已被硬编码。我的问题是如何根据我的“配置文件”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));
    }

【问题讨论】:

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


    【解决方案1】:

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

    用户名表:

    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);
        }
    }
    

    【讨论】:

    • 嘿,你的回复。所以我“需要”两张桌子?我无法使用我在“公共课程个人资料”中描述的现有“个人资料”表吗?谢谢保罗
    • 没有。我会用两张桌子来做,但它可以和一张桌子一起工作。您会发现,当您对数据进行建模时,虽然 Profile 实体会自动生成,因此您实际上并不需要编写该类。
    • 好的,非常感谢。我不认为你有任何网络链接可以帮助我更进一步,是吗?谢谢保罗
    • 这里是一起使用 MVC 和 EF 的好指南 mvcmusicstore.codeplex.com 或者如果您喜欢阅读 steve sandersons MVC 书籍,您可能会喜欢 Entity Framework 4 recipes
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多