16

我已经尝试了 2 天的工作,但到目前为止它毫无意义。我需要的是管理用户及其角色,仅此而已。

我尝试的是了解如何在 MVC 中执行此操作,但我似乎无法在 Internet 或任何 MVC 4 书籍中找到有关如何执行此操作的详细教程。

我首先使用 aspnet_regsql 实用程序启用 aspnet 数据库,这将创建这些表:

aspnet_regsql 添加的表

这就是我在本教程中找到的全部内容,它没有显示如何与这些表进行交互(我假设是使用默认的成员资格提供程序),到目前为止,我发现有 3 个主要选项可以做到这一点:

  • 默认会员提供者(我对此一无所知)
  • 通用提供商
  • 简单会员

我找到了这个教程:

http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-7

在这里,他们要求使用 Internet 应用程序模板创建一个新的 MVC 4 应用程序项目,并复制与帐户控制相关的所有文件。

我是为我的项目这样做的,但是一旦我尝试登录,我就会得到:

要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的一个实例。

根据这个论坛: http ://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/d352bb1b-577c-42b7-8872-5ed59cd65f32/

是因为我如何在 web.config 文件中定义配置文件、成员资格和 roleManager 提供程序,该文件定义如下:

<profile>
  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="DatabaseConnection" applicationName="/" />
  </providers>
</profile>
<membership>
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DatabaseConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>
<roleManager enabled="true">
  <providers>
    <clear />
    <add connectionStringName="DatabaseConnection" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
    <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>

我所需要的只是能够添加新用户、为他们分配角色并根据访问视图的角色显示不同的内容。

问题 #1 当我使用 Internet 应用程序模板创建 MVC 4 应用程序时,使用的成员资格提供程序是什么?

问题2

我对 web.config 文件做错了什么?如何正确定义提供者?

问题 #3

哪个选项更适合我?如果你知道一个很好的教程,你能把我链接到它吗?

任何帮助将不胜感激!提前致谢!

4

3 回答 3

4

您使用的会员服务提供商已过时。新的通用成员资格提供程序使用不带前缀的新表名aspnet_

1) 请查看 Scott Hanselman 的链接。

2)profile如果你不使用它,你不需要它。roleManager配置不正确。

仅供参考:请machineKey在 web.config 中明确定义;它将为您节省很多未来的麻烦。

PS我同意你的看法。我刚读完Pro ASP.NET MVC 4 by Adam Freeman;他没有提到会员提供者。ASP.NET MVC 4 and the Web API by Jamie Kurtz如果您想阅读,请使用旧版 Membership Provider。

于 2013-03-27T17:03:24.287 回答
1

问题 #1 当我使用 Internet 应用程序模板创建 MVC 4 应用程序时,使用的成员资格提供程序是什么?

答案:SimpleMembershipProvider

问题 #2 我对 web.config 文件做错了什么?如何正确定义提供者?

答:对于 SimpleMembershipProvider,不需要修改 web.config 文件。有关详细的配置/设置信息和教程,请参见此处:http: //aaron-hoffman.blogspot.com/2013/02/aspnet-mvc-4-membership-users-passwords.html

于 2013-08-20T19:48:40.027 回答
1

成员资格和安全性在 ASP.Net 中过于复杂,在 ASP.NET MVC 中仍然过于复杂。但幸运的是,完全可以不使用内置成员资格。我已经创建了简单的解决方案并在很多项目中使用,现在将其添加到 github,请参阅http://github.com/TesserisPro/ASP.NET-SImple-Security-Provider您可以轻松自定义它。

于 2014-08-19T10:22:36.057 回答