2011-12-29 10 views
4

web.configの設定に基づいてページに認証が必要かどうかを確認する方法があるかどうかを知りたい。このweb.configの設定に基づいてページに認証が必要かどうかをプログラムで確認する

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

のようなノードがある場合は基本的に、私はそれが認証を必要とするかどう任意のページをチェックすると、それはアカウントのディレクトリの下にある場合はtrueを返すようにしたいと思います。これは可能ですか?

+0

は、あなただけのXmlDocumentでweb.configファイルを解析し、あなたが探しているの設定を探しませんか?あるいは私はあなたの意図を誤解していますか? –

+0

asp.netがこれをしているのであれば、もう一度configを読み込んで追加のオーバーヘッド/起動時間を置いてはいけません。 –

+0

asp.netアプリケーションからweb.configにアクセスする方法をお探しですか? –

答えて

6

解決策は、匿名ID(プリンシパル)を作成し、CheckUrlAccessForPrincipalメソッドに渡すことです。ページが公開か、認証が必要かを判断します。

を参照してください以下のコード:

var principal = new GenericPrincipal(new GenericIdentity(String.Empty, String.Empty), new string[]{}); 
bool requiredAuthentication = UrlAuthorizationModule.CheckUrlAccessForPrincipal(Page.AppRelativeVirtualPath, principal, Request.HttpMethod); 
4

ユーザーがリクエストしたページを確認していますか?その要求はページには決して行き渡らないだろう。 url承認ワークフローを確認してください。

enter image description here

http://www.asp.net/web-forms/tutorials/security/membership/user-based-authorization-cs

+0

あなたは前提が間違っています。ユーザーはログインしていないと仮定しています。この場合、ログインページにリダイレクトされます(認証が必要なページには決して行きません)。彼らがログインしていると仮定して、ページにアクセスできると仮定します...私はまだ各ページでログインする必要があるかどうかを判断したいです –

+2

OK、おそらく各ページでUrlAuthorizationModule.CheckUrlAccessForPrincipalメソッドを使用できます匿名ユーザーを渡して応答をチェックしますか? http://msdn.microsoft.com/en-us/library/system.web.security.urlauthorizationmodule.checkurlaccessforprincipal.aspx –

+0

これが動作します。誰かがコピーパスタを望む場合に備えて、コードを別の回答に投稿します。ありがとうございました! –

0

私はあなたが正確に求めているものに、わずか混乱していますが、ページのためのページ毎に認証を強制するために、あなたのweb.configファイルを使用するために、次のようなものが必要この:あなたはそれよりも細かいことが必要な場合は

<location path="Forms/Administration/Default.aspx"> 
     <system.web> 
      <authorization> 
       <allow roles="Administrator, User, AdditionalUser" /> 
      </authorization> 
     </system.web> 
    </location> 

、あなたは中間層にロジックを追加して、ページのロードまたはURL要求(MVCの場合)を確認する必要があります。

+0

"中間層にロジックを追加しますか?"何? – spender

+0

@ spender - あなたの質問は何ですか?どのように明確ではないのですか? –

+0

どの論理、そして中間層はどこですか?どちらも明らかではない。 – spender

関連する問題