spe*_*one 17 asp.net asp.net-mvc asp.net-core-mvc asp.net-identity-3 asp.net-core
我目前正在寻找一种解决方案,使用带有Identity 3的ASP .NET 5 MVC 6中的高级角色/组权限管理.我启动了一个带有集成的轻松登录系统的新预览启动Web项目.
现在我需要一个复杂的"用户权限管理",具有以下功能:
我已经看到这种身份已经广泛地为我提供了适合我的表结构.(例如AspNetUsers,AspNetUserRoles,AspNetRoles,AspNetRoleClaims),
但我错过了使用它们的好示例/文档.
对于MVC 5,我使用了这个示例:用户有许多组,一个组可以有多个角色(角色是类/函数源代码中的访问对象) ASP.NET Identity 2.0:实现基于组的权限管理
存在这些要求已经是一个工作示例,您不必重新发明轮子.
我们在这里处于同一条船上,当然,除了来源之外,没有太多阅读……
我们最终实施了政策。策略是满足授权所需的一组声明。然后可以将这些策略应用于控制器。
您可以在 Startup.cs、ConfigureServices 中定义您的策略:
services.AddAuthorization(options =>
{
options.AddPolicy("SalesSenior", policy =>
{
policy.RequireClaim("department", "sales");
policy.RequireClaim("status", "senior");
});
});
Run Code Online (Sandbox Code Playgroud)
我们定义了角色,为它们分配了 1 个或多个声明,并为用户分配了角色,以便在点击控制器时根据适当的策略检查它们。
您可以将其注入IAuthorizationService
到控制器或属性中,如下所示:
public class SalesDashboardController: Controller
{
private readonly IAuthorizationService _authz;
public VarianceOverviewController(IAuthorizationService authz)
{
_authz = authz;
}
...
}
Run Code Online (Sandbox Code Playgroud)
然后您可以使用来IAuthorizationService
检查用户声明的有效性......
if (await _authz.AuthorizeAsync(User, "SalesSenior"))
{
// User is authorized
}
Run Code Online (Sandbox Code Playgroud)
这篇文章是我了解这些内容的主要来源,对我来说是一本很好的入门读物。祝你好运!
归档时间: |
|
查看次数: |
6178 次 |
最近记录: |