.net core 如何在asp.net core 2.1项目中保护基于用户的文件夹和文件
我的项目中有一个名为.net core 如何在asp.net core 2.1项目中保护基于用户的文件夹和文件,.net-core,asp.net-core-mvc,protected-folders,.net Core,Asp.net Core Mvc,Protected Folders,我的项目中有一个名为archive的文件夹,每个用户都有一个单独的文件夹。样本文件夹结构 Archive(Folder) => User1(Folder) => other folders => files Archive(Folder) => User2(Folder) => other folders => files ... 我不希望用户访问其他用户的文件夹和文件。我还想阻止未登录的用户访问存档文件夹及其内容 如何做到这一点?在操作系统级别创建权限(文
archive
的文件夹,每个用户都有一个单独的文件夹。样本文件夹结构
Archive(Folder) => User1(Folder) => other folders => files
Archive(Folder) => User2(Folder) => other folders => files ...
我不希望用户访问其他用户的文件夹和文件。我还想阻止未登录的用户访问存档
文件夹及其内容
如何做到这一点?在操作系统级别创建权限(文件/文件夹级别的所有权)可能会很麻烦。如果您决定在操作系统级别执行此操作,则需要对用户进行域身份验证/windows身份验证(因此您需要使用windows或Active Directory身份验证)
然后,您可以轻松地将所有权授予特定的文件/文件夹,而其他任何人(其他非管理员用户)都无法访问这些文件/文件夹
另一方面,您可以决定在应用程序层上创建此机制。在这种情况下,您只需要使用提升的用户模拟您的应用程序,以便创建文件/文件夹。之后,您需要在应用程序级别上创建机制,以标识哪些用户可以访问where(文件夹)。为此,我自己选择使用缓存数据库表。有关
静态文件授权
,您可以参考
另一种选择是,您可以编写自己的中间件,在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();
您的意思是希望获得文件系统/操作系统层的权限吗?还是只想在应用层中设置权限?