将基于声明的授权从MVC5中的web api迁移到MVC6

时间:2015-12-14 16:32:27

标签: asp.net-web-api authorization asp.net-core-mvc .net-4.6

我正在关注这两篇文章herehere,以了解如何将基于声明的身份验证和授权从MVC 5迁移到MVC 6。

在MVC 5中,我可以在相应的操作方法

上使用如下的ClaimsPrincipalPermission属性
[ClaimsPrincipalPermission(SecurityAction.Demand, Operation = "RecordManagement", Resource = "Edit")]
[HttpPost]
public IHttpActionResult EditRecord(string id)
{
    //Code to
    //edit
    return Ok("Edited: " + id);
}

[ClaimsPrincipalPermission(SecurityAction.Demand, Operation = "RecordManagement", Resource = "Delete")]
[HttpPost]
public IHttpActionResult DeleteRecord(string id)
{
    //Code to
    //delete
    return Ok("Deleted: " + id);
}

然后从登录过程中具有OperationResource键值组合的数据库查询构建主对象 然后在类context.Principal.HasClaim(action, resource);的重写CheckAccess方法中使用MyCustomClaimCheck : ClaimsAuthorizationManager调用来验证访问权限。

似乎没有一种方法可以使用我所看到的MVC6框架来实现类似的东西。似乎唯一接近的是使用此行添加策略as per docs

services.AddAuthorization(options =>
    {
        options.AddPolicy("EmployeeOnly", policy => policy.RequireClaim("EmployeeNumber"));
    }

但这意味着我会使用应用程序中的所有可能策略来膨胀该方法。如果我的理解是正确的,这不是一个非常好的方法。有没有人找到使用基于声明的方法的解决方法,就像在MVC5中一样?

0 个答案:

没有答案