【发布时间】:2015-10-12 08:02:40
【问题描述】:
我想在我的授权策略中使用一个资源(在这种情况下为User 对象)并且我有类似的东西。
public class CountryAuthorizationHandler :
AuthorizationHandler<OperationAuthorizationRequirement, User>
{
protected override void Handle(AuthorizationContext context,
OperationAuthorizationRequirement requirement, User user)
{
if(context.User.HasClaim(ClaimTypes.Country, user.Country))
context.Succeed(requirement);
}
}
我认为我不能通过Authorize 以声明方式使用它,但我如何在我的控制器操作方法中强制使用它,例如,我的User 对象在哪里?任何代码示例或链接将不胜感激。
【问题讨论】:
-
如果您的授权仅基于用户声明,您可以使用
Authorize属性。[Authorize(Policy = "MyPolicy")] -
@Mike Wasson Authz 基于用户和资源。这就像管理员用户编辑用户的场景,规则是一个国家的管理员只能编辑自己国家的用户。我需要对照资源所在国家/地区(在本例中为用户)检查委托人的国家/地区声明。
-
知道了。您的问题可能是github.com/aspnet/Security/issues/494 的重复(尽管您的问题描述更完整!)
标签: c# authorization asp.net-core asp.net-core-mvc