私たちには、ASP.NET MVC 4イントラネットアプリケーションがあります。私たちはWindows認証を使用しています。ユーザーの資格情報が使用され、Webアプリケーションから資格情報にアクセスできます。ASP.NET MVC 4でのWindows認証とフォーム認証のハイブリッド
私たちが本当に望むのは、ある種のハイブリッドモードです。ブラウザからユーザーの資格情報を取得する必要がありますが、ユーザーがアプリケーションのデータベースに存在することも確認したいと考えています。ユーザーがデータベースにいる場合は、そのまま続行できます。そうでない場合は、代替資格情報を要求するページにそれらをリダイレクトする必要があります。私が今やっていることは、にはApplication_AuthenticateRequest
メソッドがあり、ユーザーが認証されているかどうかを確認しています。それらがあり、そのクッキー情報がシステムにログインしているという事実を反映していない場合、私はそれらをログインし、ユーザーに関する情報を含むいくつかのクッキーを設定します。認証されていない場合は、ログインページにリダイレクトします。会社のポリシーに関連する理由でADの役割を使用することはできないため、追加の認証にデータベースを使用する必要があります。
私はApplication_AuthenticateRequest
がこれを行う場所ではないと推測していますが、多分そうです。しかし、基本的に認証の要求をフィルタリングする場所が必要です。しかし、この実装ではさらに別の問題が発生します。
匿名アクセスを許可する特定のURLがあります。これらのためにweb.configに<location>
タグを追加しました。問題は、匿名の呼び出しがこれらに行われると、Application_AuthenticateRequest
になり、ユーザーをDBにログインさせようとすることです。今、これらのURLを処理するためにApplication_AuthenticateRequest
にコードを追加することはできますが、それは現在私の計画ですが、私が書いていてApplication_AuthenticateRequest
がこれを行う場所ではない場合は、
が、私はまだ上の401エラーを取得する:あなたはこのようにコントローラレベルまたはアクションのレベルでこの属性を使用することができ、その後
を:あなたはこのようAuthorizeAttributeを拡張することができます誰にでも許可するコントローラメソッド。この特定のケースでは、私はC# 'HttpWebRequest.GetResponse()'呼び出しから呼び出しています。 'DebugController.FlushCaches()'には[AllowAnonymous]があり、 'web.config'には' 'を持つ' Debug/FlushCaches'の ''タグがあります。しかし、私の 'HttpWebRequest'はそれを呼び出したときに、私はあなたのタグとして401 –
Pete
使用これを取得: ' <場所のパスは= "デバッグ/ FlushCachesを"> <承認> ユーザー= "*" が可能何> 承認> ' –
ataravati
http://stackoverflow.com/questions/15087755/use-anonymous-authentication-in-mvc4-on-single-controller-when-the-whole-applica – ataravati