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

オペレーティング システム レベルでアクセス許可 (ファイル/フォルダー レベルの所有権) を作成するのは面倒な場合があります。これを OS レベルで行う場合は、ユーザーをドメイン認証 / Windows 認証にする必要があります (したがって、Windows または Active Directory 認証を使用する必要があります)。

次に、特定のファイル/フォルダーに所有権を簡単に与えることができ、他のユーザー (他の非管理者ユーザー) がそれらにアクセスすることはできません。


一方、このメカニズムをアプリケーション層に作成することもできます。この場合、ファイル/フォルダーを作成できるように、昇格したユーザーでアプリケーションを偽装するだけで済みます。その後、どのユーザーがどこ (フォルダー) にアクセスできるかを識別するためのメカニズムをアプリケーション レベルで作成する必要があります。このために、私自身はキャッシュされたデータベース テーブルを使用することにしました。

于 2019-01-04T19:14:39.743 に答える