Добавление дополнительных политик к авторизации позволяет последующим политикам возвращать 403 вместо 401, что работает для того, что я хочу сделать.
Однако, когда у меня есть что-то вроде:
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MustHaveResourceAccessRequirement requirement)
{
if (context.Resource is AuthorizationFilterContext filterContext)
{
var request = filterContext.RouteData.Values["request"];
...
}
}
Я не могу получить доступ к request
, поскольку он не является частью самого маршрута ...
Действие контроллера:
public ActionResult GetResource([FromBody] GetResourceRequest request)
Поскольку это [FromBody]
, а не [FromRoute]
, он недоступен.
Можно ли получить связанную модель в AuthorizationHandler
без необходимости вручную определять, является ли она из запроса / маршрута / тела, поскольку я хочу использовать это для множества различных запросов, у меня не может быть каждого запроса, требующего указать другой аргумент на каждом маршруте.