1

我的archive项目中有一个文件夹,每个用户都有一个单独的文件夹。示例文件夹结构;

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

我不希望用户访问其他用户的文件夹和文件。我还想阻止未登录的用户访问该archive文件夹及其内容。

我怎样才能做到这一点?

4

2 回答 2

3

对于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();
于 2019-01-07T06:13:27.087 回答
0

在操作系统级别创建权限(文件/文件夹级别所有权)可能很麻烦。如果您决定在操作系统级别进行此操作,则需要您的用户进行域身份验证/Windows 身份验证(因此您需要使用 Windows 或 Active Directory 身份验证)

然后您可以轻松地授予特定文件/文件夹的所有权,并且其他任何人(其他非管理员用户)都无法访问它们


另一方面,您可能决定在应用层创建这种机制。在这种情况下,您只需使用提升的用户模拟您的应用程序,以便您可以创建文件/文件夹。之后,您需要在应用程序级别创建机制来识别哪些用户可以访问哪里(文件夹)。为此,我自己选择使用缓存数据库表。

于 2019-01-04T19:14:39.743 回答