Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何设计所有用户角色的检索和处理?_C#_Asp.net Core Mvc_Authorization_Roles - Fatal编程技术网

C# 如何设计所有用户角色的检索和处理?

C# 如何设计所有用户角色的检索和处理?,c#,asp.net-core-mvc,authorization,roles,C#,Asp.net Core Mvc,Authorization,Roles,我正在用ASP.NET core 2.0 MVC构建一个内部网。所有用户都是active directory的一部分。此外,我还有一个MSSQL数据库,其中包含以下表格: Users (Id, FirstName, UserNameAd (unique), ...) Roles (Id, RoleName) UserRoles (User_Id, Role_Id) 在我的web应用程序中,我现在想要检索用户的角色,并将它们存储在Microsoft的身份验证/标识类中,以便使用[Authenti

我正在用ASP.NET core 2.0 MVC构建一个内部网。所有用户都是active directory的一部分。此外,我还有一个MSSQL数据库,其中包含以下表格:

Users (Id, FirstName, UserNameAd (unique), ...)
Roles (Id, RoleName)
UserRoles (User_Id, Role_Id)
在我的web应用程序中,我现在想要检索用户的角色,并将它们存储在Microsoft的身份验证/标识类中,以便使用
[Authenticate(roles=“Admin”)]
之类的东西。我不知道我应该把这个角色要求放在哪里,最好的做法是什么。用户可能在白天获得一个新角色,或者在白天删除了一个角色,我实际上不希望用户单击某个特定的东西,或者需要他重新启动浏览器以应用新角色-这就是为什么我认为每个服务器操作(POST、get)都需要从服务器请求角色的原因

任何想法或链接到一个好的教程将不胜感激


另外,如果您认为我的方法不是很好的做法,并且您有更好的想法,我很乐意知道。

在互联网上进行了大量讨论和研究后,我得出结论,选择纯windows身份验证


它是开箱即用的,您可以使用[Authorize(roles=“ADGroupName”)]将active directory组作为角色使用,这非常简单和漂亮。

您应该避免在应用程序中硬编码授权和RBAC。利用现有工具,例如,从LDAP而不是本地数据库读取您的角色,或使用ABAC/XACML之类的工具。此intranet将使用不同的模块处理数百个用户和大约80个不同的系统。这就是我们不希望使用Active Directory组的主要原因,因为我们认为这将完全淹没我们的广告。您能解释一下为什么您认为我们不应该在这个应用程序中使用RBAC吗?我也不明白你所说的“硬编码”是什么意思。将某物存储在数据库或XACML中的区别在哪里?请参阅我对这个问题的回答:我现在更了解您的方法的优点。然而,在我看来,市场上有几种解决方案,你必须购买。这不是我们目前的方法,我仍然对如何从数据库中检索每个请求的用户角色感兴趣…我认为微软的身份解决方案在以后的阶段可能会变得混乱和有限,然而,现在我认为只需向控制器添加一行代码就可以很方便地将其访问权限限制为一个特定的角色。但是,我仍然无法在asp.net core 2.0中的身份与数据库之间建立链接,角色也是如此。。。