首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.net5中的授权

ASP.net5中的授权
EN

Stack Overflow用户
提问于 2016-01-29 14:20:44
回答 4查看 461关注 0票数 3

我正在尝试查看ASP.net5中是否有一些“开箱即用”的东西可以授权我的应用程序需要。我使用基于组/权限的方法进行授权。使用Identity3时,我将角色用作组,然后从中创建权限。每个权限都有一个链接的资源和一个或多个值,例如:

资源=页面,权限=添加、更新、查看、删除

另一个复杂的问题是,组具有动态名称和动态权限!

我开始阅读ASP.net5中关于授权的文章,似乎我找到了一种叫做策略的东西,听起来不错。它似乎强制您使用声明,如果我使用ClaimsTransformer获取所有权限并将它们作为声明添加到数据库中,这是可能的。但是,我必须为每个权限、每个资源创建一个策略,这样的想法正确吗?这看起来需要很多的设置。

有没有什么我不知道的东西已经内置在ASP.net5中,我可以使用?就像这样的属性

代码语言:javascript
复制
[Authorize("Page", "Delete")]

我可以将其添加到PageController删除方法中。

如果我必须在控制器中使用某种类型的服务和DI来实现这一点,那么也没问题。

EN

回答 4

Stack Overflow用户

发布于 2016-01-29 14:43:21

有一个ClaimsPrincipalPermissionAttribute可以满足您的需求。

或者,您可以实现自己的AuthorizeAttribute

票数 0
EN

Stack Overflow用户

发布于 2016-01-29 15:41:06

我使用AspNet.Security.OpenIdConnect.Server进行授权。但是你也可以看看OpenIddict

在任何情况下,您都可以向所需的任何方法添加Authorize属性,如下所示

代码语言:javascript
复制
[Authorize(Roles = "Administrator,SimpleUser,AnOtherRole")]
public void MyMethod() {}
票数 0
EN

Stack Overflow用户

发布于 2016-01-29 21:54:50

Resource based authorization可能会满足您的需求,但我有点困惑于页面是资源,而不是页面的作用对象。

以您的Page/Delete组合为例,我可以想象,您的Page Delete操作接受一个参数,指示要删除的页面,而不是资源是Page。(如果不是这样,那么这种方法当然不会起作用)

在本例中,您将执行如下操作

代码语言:javascript
复制
[Authorize]
public class PageController : Controller
{
    IAuthorizationService _authorizationService;

    public PageController(IAuthorizationService authorizationService)
    {
        _authorizationService = authorizationService;
    }

    public Delete(int pageId)
    {
        var page = pageRepo.GetPage(pageId);
        if (await authorizationService.AuthorizeAsync(User, page,  Operations.Delete))
        {
            return View(page);
        }
        else
        {
            return new ChallengeResult();
        }
    }
}

为了实现这一点,您将基于页面和操作需求(或任何旧的需求,但参数化的操作需求意味着您可以相应地编写单个处理程序和分支)编写一个处理程序。

我们非常努力地从将数据放入属性中转移到需求中,因为坦率地说,属性中的数据是维护的噩梦。

需要注意的另一件事是:由于处理程序是通过DI解析的,因此您可以将用户的权限解析器注入到处理程序中,这将避免使用声明转换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35078114

复制
相关文章

相似问题

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