Zyp*_*rax 5 asp.net forms-authentication asp.net-membership roles
编辑 - 重写我原来的问题,以提供更多信息
背景信息
在我的工作中,我正在为客户开发ASP.Net Web应用程序.在我们的实现中,我们使用诸如Forms身份验证与MembershipProviders和RoleProviders之类的技术.一切顺利,直到我遇到配置角色的一些困难,因为角色不是系统范围的,而是与客户帐户和项目相关.
我无法确定我们的确切设置/配方,因为我认为我们公司不会批准......
什么是客户/项目?
我们公司每年(或其他间隔)为客户提供管理信息.
在我们的系统中,客户/合同包括:
外联网站点设置
最终,我们希望所有客户都能够通过我们的在线系统访问其管理信息.外联网由两个站点组成:
测量站点是外联网中最有趣的部分.我们将为新的概述,报告,管理和维护对研究重要的资源创建子模块.
我们的Visual Studio解决方案包含许多项目.一个名为Portal的Web应用程序作为基础.站点和模块是该应用程序中的虚拟目录(使得在事物之间共享MasterPages更容易).
什么样的角色?
以下用户(读取:角色)将使用该系统:
ASP.Net用户怎么样?
该系统将拥有许多ASP.Net用户,让我们关注客户用户:
URL结构
这些是我们应用程序中的典型URL:
我们还将创建一个文档URL,您可以通过它的GUID请求特定文档.系统必须检查用户是否拥有该文档的权限.该文档与度量相关,用户或特定角色对文档具有特定权限.
有什么问题?(最后;))
角色不足以确定允许用户查看/访问/下载特定项目的内容.仅仅说管理者可以访问某个导航项是不够的.当用户请求Measurement 1000时,我们必须检查用户不仅具有Manager角色,还具有Measurement 1000的Manager角色.
总结如下:
我们如何限制用户的帐户/度量?
(记得超级用户看到所有测量值,有些经理只能进行具体测量)
我们如何在产品/测量级别应用角色?(用户X可以是测量1的主要接触,但只是测量2的管理者)
我们如何限制经理访问报告屏幕并仅限制其部门的报告?
所有这些都具有asp.net类的神奇功能,可能还有自定义的roleprovider实现.
类似Stackoverflow问题/问题
ASP.NET,如何管理具有不同类型角色的用户
您从我看到的各种帖子中寻求的是自定义角色机制,或者换句话说,自定义授权机制。身份验证仍然可以使用标准的 SqlMembershipProvider。
我不确定标准角色提供者是否会为您提供您想要的内容,因为授权要求您拥有项目的上下文。但是,您可能会研究编写自定义 RoleProvider 以查看是否可以创建一些自定义方法来执行此操作。尽管如此,为了回答这个问题,我将假设您不能使用 SqlRoleProvider。
所以,这里有一些潜在的模式:
Create Table Companies
(
Id int not null Primary Key
, ...
)
Create Table Projects
(
Id int not null Primary Key
, PrimaryContactUserId uniqueidentifier
, ...
, Constraint FK_Projects_aspnet_Users
Foreign Key ( PrimaryContactUserId )
References dbo.aspnet_Users ( UserId )
)
Create Table Roles
(
Name nvarchar(100) not null Primary Key
, ...
)
Create Table ProjectCompanyRoles
(
CompanyId int not null
, ProjectId int not null
, RoleName nvarchar(100) not null
, Constraint FK_...
)
Run Code Online (Sandbox Code Playgroud)
正如我之前所说,将 PrimaryContact 包含在 Projects 表中的原因是为了确保给定项目只有一个。如果将其作为角色包含,则必须包含一堆跳圈代码,以确保一个项目不会分配多个 PrimaryContact。如果是这种情况,则从 Projects 表中取出 PrimaryContactUserId 并将其设为角色。
授权检查需要针对 ProjectCompanyRoles 进行查询。同样,项目和公司上下文的添加使得使用默认角色提供程序出现问题。如果您想使用 .NET 机制进行角色和身份验证,那么您必须实现自己的自定义 RoleProvider。
| 归档时间: |
|
| 查看次数: |
1580 次 |
| 最近记录: |