1

Я только начал изучать модель безопасности .NET Core. Это кажется далеким и лучшим, чем предыдущие модели (мне очень нравится идея политики, роли были очень ограничены ИМО), но документация, похоже, не охватывает то, что я хотел бы сделать ... Я надеюсь, Возможно сделать это, но я не знаю, если это так.Модель авторизации .NET Core: политики, требующие контекста из запроса

Я создаю приложение, в котором пользователи могут создавать «организации» и приглашать других пользователей присоединиться. И наоборот, пользователи могут подать заявку на участие в организации.

Организация является центральной концепцией приложения; почти вся деятельность ориентирована на организацию, и я хотел бы построить политику, которая после получения запроса проверит, имеет ли текущий пользователь доступ к ресурсу организации, к которому он или она просит, в качестве члена. Я бы включил идентификатор организации с каждым запросом.

Проблема, которую я вижу, заключается в том, что, похоже, не существует способа, чтобы политика «знала» контекст запроса, чтобы он мог проверить идентификатор организации и проверить, является ли пользователь член этой организации. Существует ли такой механизм или концепция политики не подходит для такого подхода?

ответ

0

Вы можете использовать IHttpContextAccessor, вводить его туда, где захотите, и использовать его для получения контекста.

В вашем Startup.cs:

services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 

И инъекция:

public class CustomClass 
{ 
    private readonly IHttpContextAccessor _contextAccessor; 

    public CustomClass(IHttpContextAccessor contextAccessor) 
    { 
      _contextAccessor = contextAccessor; 
    } 
} 
+0

Похоже HttpContext доступно через context.Resource уже. Проблема заключается в том, что это происходит до привязки или проверки модели. Фу, это так же безобразно, как AuthorizationActionFilters. –