静的ファイルを傍受する方法アイデンティティの許可?

同社は、文書管理サービスを開発しました前に、最も基本的な機能は、削除、更新、プレビュー、アップロードしたファイルをダウンロードすることです。企業の責任経営関連アクセサリーの様々なサブシステムは、すべてのインターフェイスは、AOPによって傍受身元を認証するために使用されています、しかし、プレビュー期間中に、使用は新しいプレビューファイルを生成することですので、このモデルは、直接URLがブラウザを通して見プレビューファイルに戻るので、システムがオープン、静的なファイルをプレビューする必要があり、これは非常に簡単です:

app.UseStaticFiles(新しいStaticFileOptions()
            { 
                ContentTypeProvider = プロバイダ、
                OnPrepareResponse = CTX => 
                { 
                    ctx.Context.Response.Headers.Append(" のCache-Control "" 公共、MAX-年齢= 600 " ); 
                } 
            })。
            app.UseFileServer(新しいFileServerOptions()
            { 
                FileProvider = 新しいPhysicalFileProvider
                    Path.Combine(Directory.GetCurrentDirectory()、" wwwrootに"" FileFactory "))、    // 実際のディレクトリアドレス 
                    RequestPath = 新新 Microsoft.AspNetCore.Http.PathString(" /ドキュメントセンター")、   // ユーザーのアクセスアドレス 
                    EnableDirectoryBrowsing = trueに                                     // ディレクトリの参照をオンにします 
            });

この操作を完了するために、スタートアップの上記の方法に追加されたコードを設定します。

そのような場合には、その後にのみ、ユーザーに関係なく、限り、このリンクのように認識して、実際には、ファイルサービスを表示するには、ファイルシステム全体の許可を受けたように、それは確かにデータのセキュリティの原則に反しているが、ミドルウェアを持っていることが必要ですユーザーの静的ファイルのアクセス権をフィルタリングします。

ミドルウェアのコードは非常に簡単です

 パブリック クラスAuthorizeStaticFilesMiddleware 
    { 
        プライベート 読み取り専用RequestDelegateの_next。

        公共AuthorizeStaticFilesMiddleware(RequestDelegate次)
        { 
            _next = 次回。
        } 

        パブリック 非同期タスク起動(のHttpContextコンテキスト)
        { 
            場合新しいはIdentityCheck()IdentityCheckMethod(コンテキスト)が。)
                 待つ_next(コンテキスト)。
            他に
                待つ context.Response.WriteAsyncは(" 您无权查看该文件" 、Encoding.UTF8)。
        } 
    }

自分の判断がここにトークンを介して行われ、一般的にシングルサインオンを実現、達成するために、あなたは許可トークンによる判断のセキュリティに合理的に関連させることができます。

設定の起動方法で直接使用することができます中級:

            app.UseWhen(
                C => c.Request.Path.Value.Contains(" 文件中心" )、
                _ => _.UseMiddleware <AuthorizeStaticFilesMiddleware>());

この時点では、静的ファイルのデータの検証を完了しました。

 

PS:もちろんいくつかの問題、いくつかのAPIを傍受するために検証を追加する必要もキーワードが含まれていないだろうような、それはこのような状況から直接拒否されますがありコーディネートとバックエンド開発する必要があり、このAPIを使用しないようにしてみてください。

おすすめ

転載: www.cnblogs.com/yuchenghao/p/11571890.html