【问题标题】:ASP.NET MVC 3 Membership using Entity Framework使用实体框架的 ASP.NET MVC 3 成员资格
【发布时间】:2012-07-13 16:45:39
【问题描述】:

我正在使用 ASP.NET MVC 3 构建我的网站(前 PHP 程序员),使用 Entity Framework,我希望集成内置的成员支持。 虽然我已经阅读了很多问题和教程,但我不知道在使用 MVC 和 EF 时应该使用希望的方法。

我阅读了有关 MembershipProvider 的信息,但它似乎与 ASP.NET 网络表单相关...

我应该使用哪种技术来将成员资格(具有许多属性,甚至不同的登录方式:FB、twitter 等)集成到我的站点,并能够将其与我当前的实体框架数据集成。注意:我使用了代码优先的方法,但我不介意重写它,因为我还没有任何特别之处。

【问题讨论】:

标签: asp.net-mvc asp.net-mvc-3 asp.net-membership


【解决方案1】:

您似乎需要实现自己的会员资格提供程序。不是很容易,但可行。请参阅MembershipProvider 类。这个implementation 也可能对您有所帮助。

【讨论】:

  • 有什么消息吗?我想使用 EF 代码优先实现成员资格提供程序。我不喜欢 MSFT 会员的架构,今天有什么消息吗?
【解决方案2】:

您对当前的 EF 数据有何意义? 两者通常可以保持分开。 Auth 是一个安全问题,您的 EF 类是一个业务域问题,因此两者通常可以保持独立,并且 asp.net 成员身份将在其自己的单独数据库中运行。

现在的问题是,如果您希望所有这些表都在同一个数据库中(很多人都这样做),那么在这种情况下使用下面的 Ambers 建议和 aspnet_regsql.exe,尽管您需要更新成员资格和角色提供程序的连接字符串。通过这种方式,首先使用 EF 代码,您可以使用现有的 EF 连接字符串(但是,您不能这样做,但是首先使用数据库和 edmx 连接字符串)

要为成员资格配置数据库连接字符串: http://msdn.microsoft.com/en-us/library/6e9y4s5t.aspx

【讨论】:

  • 请解释一下为什么要将它们分开,为什么用户的电子邮件在这个数据库中而他的其他信息在另一个数据库中,这对你有意义吗?
  • @Shimmy 这取决于:) 如果您需要电子邮件地址,您有多种选择。 1. 创建一个只读实体(而不是 DbSet 使用 DbQuery stackoverflow.com/questions/10437058/…)以仅查询该字段的成员资格表。 2. 还可以在用户注册时将其存储在您的应用程序中。 3. 在您的数据库中实现成员资格,并为所有事情使用单个数据库。您仍然需要查询电子邮件地址。注意 #1 和 #3 如果电​​子邮件地址是登录名,那么您只需查询 HttpContext.Current.User.Identity.Name
  • @Shimmy #4,创建您自己的自定义会员提供程序。注意 asp.net 4.5 有新的 SimpleMembership 类,此外 WebMatrix 二进制文件支持通过 oauth 登录(因此可以在 mvc 中使用,因此可以获取电子邮件地址)
  • 我最终使用了SimpleMembershipProvider。一个很棒的扩展!非常感谢您的信息。
【解决方案3】:

您也可以在 ASP .NET MVC 3 中使用标准 MembershipProvider。它不使用 EF 连接,它以自己的方式与数据库一起使用。

您应该使用 aspnet_regsql.exe 准备数据库,并执行您的逻辑 - 身份验证、创建新用户、为其添加新角色、更改密码等。 一般来说,最好的方法是学习 VS 中的 Test Internet Application。

如果标准 MembershipProvider 的功能对你来说还不够,你必须自己编写实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    相关资源
    最近更新 更多