2012-02-28 19 views
3

私はasp.netのWebアプリとフォーム認証でアクセスを持っています。現在、これらのPDFファイルは、アプリ内のアンカーリンクで使用されている承認&静的コンテンツ(PDFファイル)へのアクセスを認証

\myapp 
\document\pdf\hello1.pdf 
\document\pdf\hello2.pdf 
\document\pdf\hello3.pdf 
\document\pdf\hello4.pdf 

http://localhost/myapp/document/pdf/hello1.pdf

- :フォルダ構造内でこのように見えます。今私は認証&これらの静的リソースへの直接アクセスを制限する権限を強制したいです。アプリの外からアクセスできる場合は、ログインページに移動する必要があります。

私はアプリ間で多くの場所でそれを使用するので、私はアンカータグ内のファイルのパスを変更することはできません。

web.configファイルを実行する方法はありますか?

Plsはいくつかの解決策を提案します。

ありがとうございました。

+0

あなたのページには匿名アクセスがありますか?もしそうでなければ、あなたは、PDFフォルダの読み込み権限をASP.NETアカウント(NTサービスなど)に与えてからリンクをクリックすると、選択したpdfファイル名/ IDを入力してPDFとして返すことができますファイルをサーバーから取得します。 –

答えて

0

あなたは、フォルダに個別のセキュリティ設定を持つようにlocation要素を使用することができます。

それとも、ドキュメントフォルダ内のweb.configファイルを配置し、その中にセキュリティを設定することができます。

+0

一部のファイルはasp.netセキュリティから渡され、残りはpdfのように渡されませんでした。 – Aristos

1

あなたが認証されたユーザーのみに「文書」フォルダへのアクセスを制限するために、次の行web.configに追加する必要があります。
認証されていないユーザーは、必要に応じてログインページに自動的にリダイレクトされます。

<configuration> 

.......... 
<authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" name="TSAuthCookie" cookieless="UseCookies" 
    timeout="60" path="/"/> 
</authentication> 
<location path="document"> 
    <system.web> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
    </system.web> 
</location> 
</configuration> 
+0

申し訳ありません私はちょうど私の質問descを更新しました。ドキュメントフォルダ自体には、pdfという別のフォルダが含まれています。 – Karan

+1

こののように使ってみました。しかし、それは動作しません。 – Karan

+0

アプリケーションの実際の動作は何ですか?ファイルは「公開」ですか? –

0

(古典的なパイプラインモードが有効になっている場合はIIS7に適用されます)あなたはIIS6でワイルドカードスクリプトマッピングを有効にする必要があり非ASP.NETファイル拡張子に影響を与えるようにweb.configファイルに <authorization>要素を有効にするか、統合パイプラインモードを使用するにはIIS7で。

すると、次のようなエントリをweb.configファイル

http://ruslany.net/2008/09/wildcard-script-mapping-and-iis-7-integrated-pipeline/がうまくいくご覧ください。

<location path="document"> 
    <system.web> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
    </system.web> 
+1

それとも、単にあなたがIIS 7.5のためにこれを行うだろうかASPNET_ISAPI.DLL – SilverlightFox

1

は、.NET 2.0/3.5/4.0とIIS6のために私は次のように静的に強制する必要があったことが判明しましたこのような.NETによって処理される特定のフォルダの.pdfファイルとして:

1)IIS6構成:Wのプロパティで

A. ebsiteのホームディレクトリタブに移動し、設定
をクリックします。B.既存の "アプリケーション拡張"エントリ(.ascxなど)をダブルクリックし、 "実行可能ファイル"にあるパスをコピーします(このパスはバージョンによって異なります)。 NETが使用中です。したがって、
C.アプリケーションの拡張子マッピングの追加/編集するためのダイアログをキャンセルし、新しい拡張
D.貼り付けにあなたが「実行可能」
Eに1(b)にコピーしたパスを追加するために「追加」をクリック)&ペーストをコピーする方が簡単です"Extension"では.pdf(またはその他のファイル拡張子)を入れます。
F.必要に応じて、 "All verbs"または "Limit to" GETなどを選択します。サーバー上の物理ファイルでない場合は、「ファイルが存在するかどうかを確認」のチェックを外します。
G.すべてのダイアログで[OK]をクリックします

2)web.configファイルの設定:

<location path="your_directory"> 
    <system.web> 
     <authorization> 
     <deny users="?"/> 
     </authorization> 
    </system.web> 
</location> 

B.はのhttpHandlersセクションに次の行を追加します:

A.が制限されたディレクトリやファイルの場所を追加

<add path="*.pdf" verb="*" type="System.Web.StaticFileHandler" validate="true" /> 

ここで、.netは、(私の場合はフォーム認証を使用して)認証されたユーザーのyour_directoryにのみ提供されます。

+0

を通過する.PDFファイル拡張子のマッピングを追加することができますか?私は拒否ファイル拡張子として.pdfをリクエストフィルタリングルールに追加しようとしましたが、制限されたディレクトリ設定をweb.configファイルに追加しましたが、匿名ユーザーとしてpdfファイルにアクセスして読み込めます。 – Bryan

+0

System.Web.StaticFileHandlerがどこから来ているのか説明がありません – roeb

関連する問題