代码优先会员提供者

Posted

技术标签:

【中文标题】代码优先会员提供者【英文标题】:code first membership provider 【发布时间】:2013-02-03 11:57:33 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

你应该看看SimpleMembershipProvider

和EF一起使用非常方便。

更新

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

您需要WebSecurity.InitializeDatabaseConnection 来设置数据库。

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "Id", "UserName", true);

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

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

[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; 

让某人登录:

 WebSecurity.Login(aUsername, aPassword);

上面的方法返回一个布尔值,如果为真,则登录成功。

在 Web.config 中,您不需要像使用默认 ASP.NET Membership 一样定义membershipProvider。

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

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

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

WebSecurity.CreateUserAndAccount(aUsername, aPassword, new  Email = aEmail, FirstName = aFirstName, LastName = aLastName );

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

【讨论】:

嗨,如果您使用 mvc 4 互联网应用程序模板。您会修改什么以使其使用您的数据库架构/EF 模型? +1 好点,创建一个 MVC4 互联网应用类型的新项目。这是开始 web.config 中“设置”的好地方。 我更新了我的答案。就我个人而言,我会使用空白模板,因为大多数时候我会从默认的 Internet 模板中删除很多内容,因为我不需要它或者我需要将它移动到其他类/命名空间,这样我可以自己更快地使用它:) 嗨,您的用户表,是自动生成的代码还是您自己创建的?我不小心把这个评论给了 soadyp 而不是你。 我自己创造了这个【参考方案2】:

http://msdn.microsoft.com/en-us/library/f1kyba5e

这其实和EF无关。

EF 只是一种读取数据的方式。

另请参阅表单身份验证 http://support.microsoft.com/kb/301240?wa=wsignin1.0

【讨论】:

你好,我也需要写数据,会改变吗? 不,您需要调查 Simpla 会员/自定义会员实施文档 您好,您的用户表是自动生成的代码还是您自己创建的?

以上是关于代码优先会员提供者的主要内容,如果未能解决你的问题,请参考以下文章

会员提供商中的 GetAllUsers 在哪里?

多个会员提供者,一个用户

java有参方法对象做参数

使用 ASP.Net 会员提供商忘记密码?

EF 代码优先 - 提供程序未返回 ProviderManifestToken 字符串

编程如此简单:深度优先搜索及其应用