如何实现ASP.NET角色提供程序?

时间:2011-03-25 15:33:04

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

我有一些关于ASP.NET成员资格和角色提供程序的顶级问题。我已经做了一些搜索,但我很难找到一些外行教程。我已经在ASP.NET编写了一段时间,但我对身份验证的唯一真实体验是使用FormsAuthentication.SetAuthCookie(usernameFromDatabase, false);

当我使用上面的SetAuthCookie()方法时,我使用的是ASP.NET成员资格提供程序吗?如果我错了请纠正我,但我不认为我。我只是设置一个身份验证cookie吗?我通常在我的数据存储库中实现自己的自定义方法,例如GetUser_ByUsername(string username),然后与ORM对话并获得正确的用户。

  1. 会员和角色提供者是否拥有自己的数据存储?
  2. 如果我想使用自己的数据存储怎么办?
  3. 我是否需要实施自己的会员/角色提供者,以及如何实现这一目标?
  4. 或者我只是设置auth cookie,然后使用我自己的检索方法等,这是做自定义会员/角色提供者的最佳方式吗?
  5. 我只是在寻找这个系统的简要教程/解释。如果你有任何好的参考资料让我看一下,我会高兴地看看:)

3 个答案:

答案 0 :(得分:2)

实施会员提供者并不难。请注意,您只需要实现计划实际使用的方法。应将成员资格提供程序视为从身份验证角度与您的用户信息进行交互的方法。它不会为您创建身份验证cookie;在成功调用提供程序上的ValidateUser方法之后执行此操作。它允许您针对提供程序接口开发应用程序,并通过配置轻松更改要使用的提供程序,而不是重写应用程序代码。我已经使用自己的架构成功实现了几个不同的成员资格提供程序,该架构支持内置和混合内置/活动目录身份验证。更多信息可通过以下链接获得:

答案 1 :(得分:2)

SetAuthCookie()与ASP.NET中的Forms Authentication框架配合使用,然后您可以调整它以与成员资格提供程序集成。

  • 会员和角色提供者是否拥有自己的数据存储?

他们可以,是的。有一个抽象实现,您可以根据您的特定数据需求进行子类化。您可以直接使用SqlMembershipProvider,只需要一个数据库指向并创建所需的表。该课程有很多信息,例如herehere

  • 如果我想使用自己的数据存储怎么办?

SqlMembershipProvider可以,但如果您有兴趣了解其他DBMS是如何做的,请查看此alternative MySQL framework

  • 我是否需要实施自己的会员/角色提供者,以及如何实现这一目标?

使用内置的很容易,但很多商店都会自己动手,以便他们可以使用现有的表格。您需要实施this class

  • 或者我只是设置auth cookie,然后使用我自己的检索方法等,这是做自定义会员/角色提供者的最佳方式吗?

您很可能需要一个更强大的系统,而自定义会员提供商是个好主意。

答案 2 :(得分:1)

1 - 是的,如果您使用内置的成员资格/角色提供程序,则它们使用在单独的数据库或现有数据库中创建的表。您可以使用工具aspnet_regsql.exe来创建这些表 - 它将引导您完成向导。或者,也可以使用不同的参数从命令行调用它以跳过向导。 This是MS提供的关于在数据库中创建必要的DB /表的信息。

2 - 您可以这样做,但您必须实现自定义成员资格提供程序,这并不困难。 Herehere是一些教程。

3 - 除非您想要使用自己的数据存储,或者您需要内置提供程序中不存在的功能,否则您不一定需要。

4 - 我想说你最好使用ASP.NET为会员和角色提供的内置功能。<​​/ p>