2011-01-04 15 views
1

MVCを統合する従来のASP.Net Webサイトがあります。 MVCの追加とWebForms + MVCサイトのコントローラーアクションへの一般的なアクセスを許可する

<location path="Public"> 
    <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
    </system.web> 
</location> 

:私のような場所を使用して、過去にさまざまなフォルダ、公開を行うことができました

<authorization> 
    <deny users="?"/> 
</authorization> 

:私は、web.configファイルで、標準の認証タグでWebフォーム認証を使用しますいくつかのコントローラーをいくつかのコントローラーを完全に公開する必要があります。ただし、web.configのlocationタグを使用してこれを行うことはできません。認証されていない間にアクションのURLに移動しようとすると、ASP.Netはログインページ(web.configで指定)にリダイレクトされます。これらのコントローラアクションのいずれかでAuthorization属性を使用していません。

保護が必要なすべてのWebフォームにセキュリティを侵害する中で、どのようにこれらへのアクセス権を開放しますか?

編集:

私は私が保護したいアクションに[オーソライズ]を使用していますことを明らかにしたいです。私は[承認]属性を使用していない、公共作られ、ログインしていない限り、まだアクセスすることはできませんしたい質問のアクション、

編集2:

私はいくつかのIISのトレースを行って、私は確信していると考えていますこれは実際には認証に失敗したことであり、他のエラーではありません。ここで私がアクセスしようとしている場所や経路の例である:

<location path="WC"> 
    <system.web> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
</location> 

とルート:

routes.MapRoute(
      "WC", // Route name 
      "WC/{id}", 
      new { action = "GetWC", controller = "WC" } // URL with parameters 
     ); 

そして失敗しているURL:

http://localhost/MyWebApp/WC/42 

私が実際にしていますこれを処理する一般的なルートですが、疑問を取り除くためにこれを追加しました。いずれにしても、これは正常に動作します。

+0

あなたが試している位置要素とルートの例を挙げることができますか? 2人の間の不一致が最も可能性の高い原因のように思われる。 –

答えて

0

私はActionFilterAttributeを使用して、認証が必要な特定のメソッドを装飾し、コントローラ自体を公開している可能性があります。

0

System.Web.Mvc.AuthorizeAttributeを使用してください。コントローラークラス自体を装飾することで(すべてのアクションメソッドが保護される)、または細かい穀粒コントロールのためにアクションメソッド自体を飾ることができます。

いずれも装飾されていない場合、それらはすべてのユーザー(匿名を含む)によって呼び出し可能です。単に[Authorize]を使用すると、承認されたユーザーだけがアクションメソッドを呼び出すことができます。カンマで区切られたロールのリストを渡して、アクションメソッドを呼び出すために少なくとも1つのロールが必要なリストを指定することもできます。

+0

これは基本的に私がやったことであり、うまくいきません。 –

+0

あなたの問題を引き起こす何かがあります。デフォルトでは、アクションは公開されています。あなたがそれを保護するようにAuthorizeで(またはそのクラス)を飾るまではありません。答えを得るのを手助けするためにweb.configのさまざまなセクションを投稿する必要があるかもしれません(認証要素、あなたが持っている認証要素かもしれません)。 –

+0

これを一日中研究して、私はこれと矛盾する声明を見つけました。私が理解しているところでは、OOBのMVCサイトは広く開かれていますが、WebFormsサイトは開かれていません。違いはweb.configの認証設定だと思われます。多くの人がMSフォーラムのMVPを含めて互いに矛盾していることを言っているので、私はこれを徹底的に混乱させています。 –

関連する問題