【问题标题】:Getting own EF 4.1 Code First classes to work with .NET Membership让自己的 EF 4.1 Code First 类与 .NET Membership 一起使用
【发布时间】:2011-09-27 20:45:55
【问题描述】:

我正在开发一个使用 EF 4.1 Code First 和 MVC3 构建的简单 Web 应用程序。 My Domain Model 位于 MVC3 项目之外的项目中。

我已经到了我的网络应用程序或多或少完整的阶段。但是现在,我的应用程序没有任何形式的授权或身份验证。因此,普通用户可以访问只有管理员才能访问的操作和控制器。

我的问题是,如何让我的 Web 应用程序与 .NET Membership 一起使用?因为我知道 .NET Membership 有许多自己的数据库表!

我的知识相当有限,因此任何清晰、易于理解的回答将不胜感激。

设置成员身份后,我知道如何将身份验证和授权应用于操作和控制器。

谢谢。

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-membership entity-framework-4.1 ef-code-first


    【解决方案1】:

    进入您的 C:\Windows\Microsoft.NET\Framework\v2.xx 或 v4.xx\ 并执行 aspnet_regsql,这将启动一个允许您选择数据库并添加存储的过程和表的向导让会员功能发挥作用。

    然后您运行 ASP.NET 配置向导(解决方案资源管理器顶部的小工具箱图标),然后配置您的角色和帐户。请参阅 this page 并跳至为成员和角色配置网站部分。

    【讨论】:

    • 我错过了“这个页面”应该是什么吗?此外,如果人们使用 sdf/mdf 自动附加文件,则该过程将比我从向导中选择的数据库复杂一些,不是吗?
    • @AdamTuliper - “此页面”是一个链接。所以,是的,你似乎错过了它。我认为他不会使用 sdf 文件,因为这不是默认配置
    【解决方案2】:

    ASP.Net 成员资格实际上在某种程度上有点有趣和令人沮丧。运行 Windows\Microsoft.net\Framework 文件夹中名为 aspnet_regsql.exe 的工具,该工具会生成所有必要的表以使其运行。接下来转到您的 Web.config 文件。如果您从基本的 ASP.NET MVC 3 模板开始,那么您应该有一个名为“ApplicationServices”的<connectionStrings> 条目。将其更改为您的数据库连接字符串。这是会员提供者用来连接一切的东西。如果您查看配置文件的其余部分,则应该有 <authentication><membership><profile><roleManager> 的部分。这些处理了 ASP.Net 用户管理的各个部分和设置。

    此时,一切都应该连接起来。如果您在解决方案资源管理器中选择您的项目,应该会出现一个红色的小锤子图标。这是 ASP.NET 配置管理器。您可以使用它来设置不同的配置文件并管理不同的用户。

    现在这些东西根本不会连接到您的 EF4.1 代码优先的东西。相反,您可以通过静态类MembershipRoles 与您的会员提供者进行交互。如果您查看默认 ASP.Net MVC 3 Internet 应用程序模板上的 AccountController,它将让您很好地了解它是如何工作的。

    在使用这些东西几个月后,我发现基本上编写自己的东西要容易得多。将事情捆绑在一起最终会变得非常痛苦,并且会员资格提供者为您提供了很多额外的东西,这对于小型应用程序来说是不必要的。

    【讨论】:

    • 我看到很多人都这么说,但实际上只需要使用 ProviderUserKey 作为进入他们自己的用户表的键。一点也不难,而且您可以获得默认实现的所有优点,而不必为自己实现而头疼。
    猜你喜欢
    • 2011-11-27
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多