将参数传递给 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 操作中。
有没有办法做到这一点,还是我以错误的方式处理整个事情?
多谢
保罗
.NET 属性的工作方式是,不能传入动态参数 - 因此这不起作用。
我们构建了一个更灵活的版本,它与 MVC 和 WebAPI 配合得更好,并且还有一个命令式 API - 请参阅此示例:
https://github.com/thinktecture/Thinktecture.IdentityModel/tree/master/samples/SystemWeb/ClaimsAuthorizeSample