2017-10-27 1 views
1

私は解決策を探していましたが、私の要求に合ったものを見つけることができませんでした。 パスワードで保護され、Identity 2.0を使用するMVCアプリケーションがあります。アプリケーションには、認証されたユーザーだけがアクセスできるようにするためにたくさんのPDFファイルが格納されています。私は、web.configファイルMVC 5 IIS 8.5でPDFファイルを保護

<location path="~/Cases"> 
    <system.web> 
    <authorization> 
     <deny users="?"/> 
    </authorization> 
    </system.web> 
</location> 
を使用してみましたが

/Cases 
    /CaseId 
     /Letters 
      /Letter1.pdf 
      /Letter2.pdf 
     /Reports 
      /Report1.pdf 
      /Report2.pdf 

のPDFのは、システムがそれのような独自のケースフォルダのそれぞれ有する例1000のがあり、別々のフォルダの多くに格納されています

しかし、私はPDFファイルは複数のサブフォルダを横切っているので、これを使うことはできないと思います。これはサブフォルダ内のファイルではなく/Casesフォルダ内のファイルのみを保護しますか?私はのHttpHandlerが、それについて移動する方法かもしれないことを見てきました

、私が試した:

<add name="PDFHandler" verb="*" path="*.pdf" type="System.Web.StaticFileHandler" resourceType="Unspecified" /> 

しかし、これは、それ自身の上で動作していないよう、私も書く必要がありますMVCの何か?

誰かが私にこのことについて話をする最善の方法を教えてもらえれば解決の方向に私を指摘してください。

多くのありがとうございます。

EDIT

Web.configファイル、それはあなたのケースでは可能ですが、セキュリティを処理するための最良の方法は、アプリケーションディレクトリ外のすべてのPDFファイルを移動する場合

<location path="~/Cases"> 
    <system.web> 
     <authorization> 
     <deny users="?"/> 
     </authorization> 
    </system.web> 
    </location> 
    <system.web> 
    <customErrors mode="Off" defaultRedirect="~/Error/Trouble"> 
     <error statusCode="403" redirect="~/Error/NotFound"></error> 
     <error statusCode="401" redirect="~/Error/NotAuthorized"></error> 
    </customErrors> 
    <authentication mode="None" /> 
    <compilation debug="true" targetFramework="4.5" /> 
    <httpRuntime targetFramework="4.5" maxRequestLength="51200" /> 
    <globalization uiCulture="en-GB" culture="en-GB" /> 
    </system.web> 
    <system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
     <add name="PDFHandler" verb="*" 
     path="*.pdf" 
     type="System.Web.StaticFileHandler" 
     resourceType="Unspecified" /> 
    </handlers> 
    </system.webServer> 
+0

何を望んでいないとして行うように見えた、私はまだ '/ Cases'フォルダの下に任意の.pdfファイルを開くことができます。 – JBoom

+0

'〜/ Cases'を' Cases'に変更するとどうなりますか? 'Cases'フォルダは' web.config'が存在するのと同じ親フォルダにありますか? 'web.config'に他の' authorization'要素がありますか? – mjwills

+0

'web.config'はルートにあります。私は上記の私の編集で 'web.config'の一部を追加しました。 'web.config'オプションは私がそれに必要な方法で動作するはずですか? – JBoom

答えて

1

わからないとコントローラー上のアクションを通じてのみアクセスします。こうすることで、コード内のセキュリティを処理することができ、構成を使用するよりもはるかに堅牢になります。

関連する問題