将参数传递给 ClaimsPrincipalPermission (Attribute)

本文关键字:Attribute ClaimsPrincipalPermission 参数传递 | 更新日期: 2023-09-27 18:35:25

我正在尝试使用声明来控制对MVC中资源的访问。 当我试图用争论来保护资源时,我正在挣扎。 例如,如果我想允许对他们拥有并声明的车辆执行编辑操作:

我添加声明:

  • http://tempuri/registration : AA11XX
  • http://tempuri/registration : BB11YY

我有一个 MVC 操作,例如:

[ClaimsPrincipalPermission(SecurityAction.Demand,Operation = "Post", Resource = "Vehicle/{registration}")]
public ActionResult Edit(string registration)
{
//Stuff
}

我想确保传递给 Edit 方法的参数在注册声明列表中。 我知道我可以在操作中强制执行此操作,但我想以声明方式执行此操作。

我可以使用 WIF 管道重写 CheckAccess 方法。

       public class AuthorisationManager : ClaimsAuthorizationManager
        {
            public override bool CheckAccess(AuthorizationContext context)
{ ... }

授权上下文包括请求的资源和用户拥有的声明。 缺少的环节是知道哪个参数被传递到 MVC 操作中。

有没有办法做到这一点,还是我以错误的方式处理整个事情?

多谢

保罗

将参数传递给 ClaimsPrincipalPermission (Attribute)

.NET 属性的工作方式是,不能传入动态参数 - 因此这不起作用。

我们构建了一个更灵活的版本,它与 MVC 和 WebAPI 配合得更好,并且还有一个命令式 API - 请参阅此示例:

https://github.com/thinktecture/Thinktecture.IdentityModel/tree/master/samples/SystemWeb/ClaimsAuthorizeSample