我目前正在寻找在带有Identity 3的ASP .NET 5 MVC 6中使用高级角色/组权限管理的解决方案。我启动了一个带有集成简易登录系统的新预览启动Web项目。
现在我需要一个复杂的用户权限管理"具有以下功能:
我已经看到这种身份已经广泛地为我提供了适合我的表结构。 (例如AspNetUsers,AspNetUserRoles,AspNetRoles,AspNetRoleClaims),
但我错过了使用它们的好示例/文档。
对于MVC 5,我使用了这个例子:用户有很多组,一个组可以有很多角色(角色是类/函数源代码中的访问对象) ASP.NET Identity 2.0: Implementing Group-Based Permissions Management
存在这些要求已经是一个不必重新发明轮子的工作示例。
答案 0 :(得分:4)
我们在同一条船上,在阅读方面没有太大的帮助......
我们最终实施了政策。策略是授权满足所需的一组声明。然后可以将这些策略应用于控制器。
您可以在Startup.cs,ConfigureServices:
中定义策略IAuthorizationService
我们定义了角色,为其分配了一个或多个声明,并为用户分配了角色,允许在点击控制器时根据相应的策略对其进行检查。
您可以将public class SalesDashboardController: Controller
{
private readonly IAuthorizationService _authz;
public VarianceOverviewController(IAuthorizationService authz)
{
_authz = authz;
}
...
}
注入控制器或属性,如下所示:
IAuthorizationService
然后,您可以使用if (await _authz.AuthorizeAsync(User, "SalesSenior"))
{
// User is authorized
}
检查用户声明的有效性......
{{1}}
This article是我这个东西的主要来源,对我来说是一个很好的入门书。祝你好运!
答案 1 :(得分:0)
如果您正在寻找示例项目,那么目前没有那么多。首先要看的是aspnet GitHub项目页面。
幸运的是,ASP.NET Identity子项目有一个示例项目,您可以查看here,但它可能无法满足您的所有要求。请注意,这是使用最新的测试版。
答案 2 :(得分:0)
这个帖子帮助我得到了一些有用的东西,但遗憾的是这没有更好的记录。
以下是我尝试改进的方法。 Asp.net.Identity(3.0.0.0-rc1-final)
在Startup.cs中 - > ConfigurationServices
//Define your policies here, they are strings associated with claims types, that have claim strings...
//they need to be in AspNetUserClaims table, user id, department, Dev to be allowed access to the Dev policy
//add the auth option, below that makes it work, and in the api controller, add the
//[Authorize("Dev")] attribute
services.AddAuthorization(
options =>
{
options.AddPolicy("Dev", policy => { policy.RequireClaim("department", "Dev"); });
});
services.AddMvc();