现在我需要一个复杂的“用户权限管理”,具有以下功能:
我已经看到,identity已经广泛地提供了一种适合我的表结构。(例如AspNetUsers、AspNetUserRoles、AspNetRoles、AspNetRoleClaims),
但是我缺少一个好的例子/文档来使用它们。
对于MVC5,我使用了这个例子:用户有很多组,一个组可以有很多角色(角色是源代码中类/函数的访问对象) ASP.NET Identity 2.0: Implementing Group-Based Permissions Management
这些需求的存在已经是一个有效的例子,你不必重新发明轮子。
发布于 2015-12-17 09:47:52
我们在这里是同一条船,当然除了源代码之外没有太多的阅读……
我们最终实现了政策。保单是需要授权才能满足的一组索赔。然后可以将这些策略应用于控制器。
您可以在Startup.cs、ConfigureServices中定义您的策略:
services.AddAuthorization(options =>
{
options.AddPolicy("SalesSenior", policy =>
{
policy.RequireClaim("department", "sales");
policy.RequireClaim("status", "senior");
});
});
我们定义了角色,为他们分配了一个或多个声明,并为用户分配了角色,允许他们在点击控制器时根据适当的策略进行检查。
您可以将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
}
This article是我这篇文章的主要来源,对我来说是一个很好的入门读物。祝好运!
发布于 2015-10-14 22:54:58
发布于 2016-01-11 09:14:35
这个帖子帮助我做了一些工作,但令人遗憾的是,没有更好的文档。
以下是我改进这一点的一些尝试。Asp.net.Identity (3.0.0.0-rc1-最终)
在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();
https://stackoverflow.com/questions/29966792
复制相似问题