2012-01-31 39 views
4

HttpModuleを使用してFormsAuthenticationModuleにフックし、Authenticateイベントを購読します。 Webフォームを使用すると、このイベントがモジュールで発生します。 MVCを使用している場合、このイベントは発生しません。FormsAuthenticationModule ASP.NET MVCを使用しているときにイベントが発生しないことを認証します

私はこのイベントを発生させようと試みるが、それでもやりません(これはベストプラクティスではありませんが)web.configの[コントローラ]と[場所]で[許可]属性を使用しようとしました。

Cassini Webサーバーを使用するとイベントが発生しますが、IIS 7.5またはIIS Expressでは発生しません。私たちは、.aspxのか.ashxファイルを要求すると、.NET 3.5

EDIT

認証イベントの火災を使用してASP.NET MVC 2を実行しています。私たちが拡張子のないファイルや.cssや.jsを要求しても、それは起動しません。

新しいASP.NET MVCアプリケーションは、要求されたすべてのファイルに対してこのイベントを発生させます。

提案がありますか?

+0

フォーム認証はMVCで正しく機能していますか? –

+0

@MaxToroはい。すでにaspxページに移動している場合は、カスタムHttpHandlderが既に実行してフォームクッキーを設定しています。 –

答えて

2

私たちのweb.configファイル内のすべての権限を設定していますsystem.webServerのmodules要素からrunAllManagedModulesForAllRequests = "true"が見つかりませんでした。これが追加されると、すべてのWeb要求はFormsAuthenticationModuleからAuthorizationイベントを受け取ります。

<system.webServer> 
    .... 
    <modules runAllManagedModulesForAllRequests="true"> 
    .... 
</system.webServer> 
+0

あなたの答えを受け入れてください。 –

+0

@AmarPalsapure私は持っているだろうが、あなたはそれを1日にすることはできません。 –

+0

hmmm私はそれを知らなかった、これまでに質問していない。 –

0

私はそれはそれを解決するための最良の方法だとは思わないが、私はまた、MVCとformpagesの組み合わせを使用してweb.configファイル

<location path="[path]"> 
    <system.web> 
    <authorization> 
     <allow users="[username]" roles="[role]"/> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
</location> 
+0

私はそれが助けられているかどうかを確認しようとしましたが、そうはしません。 MVCページのセキュリティをこのように構成することも、セキュリティ上のリスクです。 –

+0

個人情報の場合、この方法を使用してどのセキュリティリスクが形成されますか?どのようにそれがあなたのために動作しません来る不思議。 – DerDee

2

フォーム認証は、MVCで働いているかどうかをテストしませんaspxページへの移動は、ルートに移動しなければなりません。私はあなたの答えを見て、それは私が心に持っていたものです。非効率的なrunAllManagedModulesForAllRequests="true"の代わりに、managedHandlerの前提条件を削除することをお勧めします。

 <remove name="FormsAuthentication"/> 
    <add name="FormsAuthentication" preCondition="" type="System.Web.Security.FormsAuthenticationModule"/> 

    <remove name="DefaultAuthentication"/> 
    <add name="DefaultAuthentication" preCondition="" type="System.Web.Security.DefaultAuthenticationModule"/> 

    <remove name="RoleManager"/> 
    <add name="RoleManager" preCondition="" type="System.Web.Security.RoleManagerModule"/> 

    <remove name="UrlAuthorization"/> 
    <add name="UrlAuthorization" preCondition="" type="System.Web.Security.UrlAuthorizationModule"/> 

    <remove name="UrlRoutingModule-4.0"/> 
    <add name="UrlRoutingModule-4.0" preCondition="runtimeVersionv4.0" type="System.Web.Routing.UrlRoutingModule"/> 
+0

この回答に感謝します。多くの人がrunAllManagedModulesForAllRequestsをオフにすることを推奨しますが、ほとんどのMVCサイトが動作するために必要なこれらのモジュールはリストしません –

関連する問題