Как предоставить / ограничить доступ к подпапкам «Изображения» для каждого Клиента? - PullRequest
1 голос
/ 15 апреля 2019

У меня есть следующая структура внутри моего wwwroot / images:

Wwwroot

------- Изображения

------------- Пользователи

----------------------- У каждого клиента есть собственное имя папки.

В каждой папке есть изображение, к которому может иметь доступ только клиент.

Проблема в том, что: если какой-либо пользователь введет адрес изображения другого пользователя, он откроется.

Я пытаюсь ограничить доступ каждой папки с помощью таблицы Company из базы данных.

Я мог бы сделать это на MVC 5, используя путь к местоположению в веб-конфигурации.

Но как я могу сделать это в appsettings.json на .NET Core?

Спасибо, ребята!

OBS: Если у вас есть какой-то другой подход к этому, будем рады: D

1 Ответ

1 голос
/ 16 апреля 2019

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

В качестве другого варианта вы можете рассмотреть возможность реализации пользовательского промежуточного программного обеспечения, проверяющего идентичность, например

app.Map("/specificpath", subApp => {
    subApp.Use(async (context, next) =>
    {
        if (!context.User.Identity.IsAuthenticated)
        {
            context.Response.StatusCode = StatusCodes.Status401Unauthorized;
        }
        else if(context.Request.Path.StartsWithSegments("/specificpath/User1") && context.User.Identity.Name != "User1")
        {
            context.Response.StatusCode = StatusCodes.Status401Unauthorized;
        }
    });
});

app.UseStaticFiles();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...