Как защитить пользовательские папки и файлы в проекте asp.net core 2.1 - PullRequest
0 голосов
/ 04 января 2019

У меня есть папка с именем archive в моем проекте и отдельная папка для каждого пользователя.Пример структуры папок;

Archive(Folder) => User1(Folder) => other folders => files
Archive(Folder) => User2(Folder) => other folders => files ...

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

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Для Static file authorization вы можете сослаться на Статическая авторизация файла .

В качестве другого варианта вы можете написать собственное промежуточное ПО для проверки личности до app.UseStaticFiles();.

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

app.UseStaticFiles();
0 голосов
/ 04 января 2019

Создание разрешений (владение на уровне файлов / папок) на уровне операционной системы может быть громоздким.Если вы решите сделать это на уровне ОС, вам нужно, чтобы ваши пользователи проходили проверку подлинности домена / проверку подлинности Windows (следовательно, вам нужно использовать проверку подлинности Windows или Active Directory)

Тогда вы можете легко передать право собственности на определенные файлы / папки.и они не могут быть достигнуты кем-либо еще (другими пользователями без прав администратора)


С другой стороны, вы можете решить создать этот механизм на уровне приложений.В этом случае вам нужно только выдать себя за ваше приложение с повышенными правами, чтобы вы могли создавать файлы / папки.После этого вам необходимо создать механизм на уровне приложения для определения, какие пользователи имеют доступ к куда (папкам).Для этого я сам решил использовать таблицу кэшированной базы данных.

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