【问题标题】:Role Provider In ASP.netASP.net 中的角色提供者
【发布时间】:2012-04-08 20:04:12
【问题描述】:

我有这些角色:管理员、医生和患者。但是登录信息存储在不同的表中。管理员的用户名和密码存储在 User_TABle 中(它们是两个项目)。患者的登录信息存储在 Patient_TABLE 中:PatientID、Year 和 DocumentID(它们是三项)。我想使用 SQLRoleProvider 和 SQLProfileProvider。如何使用 loginView 设计不同的登录页面?

此致

【问题讨论】:

  • 如果您正在考虑使用自定义会员模式(即您在问题中定义的模式),那么您可能会遇到大多数登录/会员控制的问题。您是否使用定义的架构定义了自定义 MembershipProvider?
  • 当我使用roleprovider时,我同时使用MembershipProvider,所以所有用户的登录信息都保存在一个表中。我只是猜想,如果你改变了课程,你必须完成自己的课程。
  • @EricYin - 我认为您的意思是 MembershipProvider 而不是 MembershipService
  • @PaulSullivan,你说得对。我把它包起来了,所以我忘记了它的真名。改变了

标签: asp.net roleprovider role


【解决方案1】:

我认为更好的设置是这样的:

使用 ASP.NET 附带的标准 MembershipProvider 与 RoleProvider 结合使用。一旦设置好并且您拥有角色,您可以通过以下方式存储每个角色的个人信息:

使用 ProfileProvider(不是一个坏方法,但需要一些工作,因为您有多态数据(您可以使用 XML 将其存储在提供程序的文本字段中或编写您自己的自定义配置文件提供程序)

向 aspnet_Users PK 添加一个类似于您的架构但具有外键的表。在代码中,您可以执行 Roles.IsUserInRole("Whatever") 并适当地更改 loginView。这也意味着您可以拖放剩余的 LoginControl 等,并让它与标准会员提供程序一起使用

【讨论】:

  • 我不知道用户角色,因为他还没有登录。我在 loginView 中遇到问题。我有不同的用户类型。我应该为他们设计不同的 loginView 吗?
  • 如果您不知道用户是谁,您如何设计不同的登录视图 - 根据定义,他们必须先登录才能显示对用户类型有意义的任何内容。
【解决方案2】:

SqlRoleProviderSqlProfileProviderSqlMembershipProvider 带有默认的 Aspnetdb。

要创建这些提供程序使用的数据库,请运行 C:\WINDOWS\Microsoft.NET\Framework\ versionNumber 文件夹中的 aspnet_regsql.exe 可执行文件。否则,您必须创建 CustomRoleProviderCustomProfileProviderCustomMembershipProvider

http://msdn.microsoft.com/en-us/library/system.web.security.sqlroleprovider.aspx

【讨论】:

  • 您甚至不必再在 VS2010 中执行此操作 - 创建新的 ASP.NET 项目并尝试使用虚拟凭据从默认站点登录。只是这个动作调用了数据库和模式的创建
  • 是否使用 CustomRoleProvider 解决了多个用户类型?如果是,我该怎么做?我为一个用户类型使用了 CustomProvider。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2013-10-21
  • 2023-03-14
  • 1970-01-01
  • 2011-02-17
  • 1970-01-01
  • 2013-05-16
相关资源
最近更新 更多