代码第一会员提供商

Yus*_*tme 2 membership-provider code-first asp.net-mvc-4 entity-framework-5 simplemembership

如何首先使用代码将EF 5.0与成员资格提供程序集成?

我有自己的数据库架构,我想用它来注册用户等.

Man*_*ber 5

您应该看一下SimpleMembershipProvider

与EF一起使用非常容易.

更新

对于MVC4,我将从空白模板开始.

你需要WebSecurity.InitializeDatabaseConnection设置数据库.

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "Id", "UserName", true);
Run Code Online (Sandbox Code Playgroud)

它将连接字符串的名称,表,唯一标识符列和用户名列作为参数.

我在上面这段代码中使用的模型是:

[Table("Users")]
public class User
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

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

    public string Email { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

记录某人:

 WebSecurity.Login(aUsername, aPassword);
Run Code Online (Sandbox Code Playgroud)

上面的方法返回一个bool,如果为true,则登录成功.

在Web.config中,您不需要像使用默认的ASP.NET成员资格那样定义membershipProvider.

如果您需要访问提供商(删除帐户):

var provider = (SimpleMembershipProvider) Membership.Provider;
provider.DeleteAccount(aUsername); // Delete the account
provider.DeleteUser(aUsername, true); // delete the user and its data
Run Code Online (Sandbox Code Playgroud)

用于创建新用户(在这种情况下使用我给定的模型)

WebSecurity.CreateUserAndAccount(aUsername, aPassword, new { Email = aEmail, FirstName = aFirstName, LastName = aLastName });
Run Code Online (Sandbox Code Playgroud)

好处是,您现在可以将您的模型用作其他EF类作为外键,而无需在使用普通的asp.net成员资格时执行此操作时遇到麻烦.:-)