我正在尝试创建一个ClaimsAuthorizationManager
实现,这看起来非常简单。但是,由于我的MVC应用程序使用区域,因此AuthorizationContext
对象的资源属性(作为CheckAccess
方法的参数接收)未提供有关我的资源的足够信息。在声明authroization中包括区域名称资源标识符
我正在寻找某种方式来指示在控制器或区域级别的资源描述,而无需修饰每个操作方法。我试图向控制器添加[ClaimsPrincipalPermission(SecurityAction.Demand, Resource = "MyResourceName")]
,但由于缺少Operation
值,导致出现异常。我希望实现分层级联设置。例如,所有的ActionMethods都会使用属性中定义的资源,并使用默认的操作标识机制。
有没有我在这里失踪的东西?是否有框架或Thinktecture.IdentityModel助手实用程序来完成此?有没有机会注册一个自定义的AuthorizationContent生成器类?
谢谢!
感谢您的答复,布洛克。我在最初的研究中确实找到了这篇文章。我也拉了Thinktecture.IdentityModel 3.6.1。并将ClaimsAuthorizeAttribute注册为全局过滤器。但是,从我所知道的情况来看,这并不包含有关索赔中该区域的任何信息。是否建议定义方法级'ClaimAuthorize'装饰品?有什么方法可以覆盖'AuthorizationContext'的'Resource'值吗? –
检查我是否可以修饰控制器,然后根据需要为操作方法添加更多细化的授权属性。 ClaimsAuthorizationManager.CheckAccess对于每个ClaimsAuthroize实例似乎都被调用一次:在这种情况下,全局过滤器,控制器和操作。它看起来似乎Thinktecture.IdentityModel允许我以最小的配置在区域内实施索赔。本来不错的是区域特定的资源标识符模板或类似的东西。只是在说' ;) –