首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP .NET 5 MVC 6 Identity 3角色声明组

ASP .NET 5 MVC 6 Identity 3角色声明组
EN

Stack Overflow用户
提问于 2015-04-30 19:41:13
回答 3查看 6.4K关注 0票数 17

现在我需要一个复杂的“用户权限管理”,具有以下功能:

  1. 用户可以位于多个组/角色中,
  2. 一个组/角色可以有多个访问对象(例如CanAccessUser、CanEditUser...)
  3. these access objects (也许是claims?)
  4. (对于终极解决方案是可选的):此外,组可以将=> access对象(可能是声明)独立分配给用户

我已经看到,identity已经广泛地提供了一种适合我的表结构。(例如AspNetUsers、AspNetUserRoles、AspNetRoles、AspNetRoleClaims),

但是我缺少一个好的例子/文档来使用它们。

对于MVC5,我使用了这个例子:用户有很多组,一个组可以有很多角色(角色是源代码中类/函数的访问对象) ASP.NET Identity 2.0: Implementing Group-Based Permissions Management

这些需求的存在已经是一个有效的例子,你不必重新发明轮子。

EN

回答 3

Stack Overflow用户

发布于 2015-12-17 09:47:52

我们在这里是同一条船,当然除了源代码之外没有太多的阅读……

我们最终实现了政策。保单是需要授权才能满足的一组索赔。然后可以将这些策略应用于控制器。

您可以在Startup.cs、ConfigureServices中定义您的策略:

代码语言:javascript
复制
services.AddAuthorization(options =>
{
    options.AddPolicy("SalesSenior", policy =>
    {
        policy.RequireClaim("department", "sales");
        policy.RequireClaim("status", "senior");
    });
});

我们定义了角色,为他们分配了一个或多个声明,并为用户分配了角色,允许他们在点击控制器时根据适当的策略进行检查。

您可以将IAuthorizationService注入控制器或属性,如下所示:

代码语言:javascript
复制
public class SalesDashboardController: Controller
{
    private readonly IAuthorizationService _authz;

    public VarianceOverviewController(IAuthorizationService authz)
    {
        _authz = authz;
    }
    ...
}

然后,您可以使用IAuthorizationService检查用户声明的有效性...

代码语言:javascript
复制
if (await _authz.AuthorizeAsync(User, "SalesSenior"))
{
    // User is authorized            
}

This article是我这篇文章的主要来源,对我来说是一个很好的入门读物。祝好运!

票数 4
EN

Stack Overflow用户

发布于 2015-10-14 22:54:58

如果你正在寻找一个样例项目,目前还没有那么多。首先要查看的地方是aspnet GitHub项目页面。

幸运的是,ASP.NET Identity子项目有一个样例项目,您可以查看一下here,但是它可能没有涵盖您的所有需求。请注意,这使用的是最新的测试版。

票数 0
EN

Stack Overflow用户

发布于 2016-01-11 09:14:35

这个帖子帮助我做了一些工作,但令人遗憾的是,没有更好的文档。

以下是我改进这一点的一些尝试。Asp.net.Identity (3.0.0.0-rc1-最终)

在Startup.cs --> ConfigurationServices中

代码语言:javascript
复制
        //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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29966792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档