2012-08-11 30 views
5

私は、データベースに接続する独自のプロバイダを使用して、フォームベースの認証によるログインが必要ないくつかの領域のWebサイトを持っています。ASP.NET MVC3での基本認証とフォーム認証を混在

ウェブサイトはプレビューになっていますので、ライブになる前に不正なアクセスを防ぐために基本的な認証でサイト全体を保護したいと考えています。

問題は、基本とフォームの認証が公開されるページにあり、代わりにフォームのログインに移動する場合です。

メンバーログインとポータルアクセスのフォームベースの認証を維持できますが、基本認証を使用する前にサイト全体を公開アクセスから保護するにはどうすればよいですか?

答えて

0

私はあなたのユースケースを次のように満たす必要があると思います。

サイト内.Net認可ルールは、匿名ユーザーに対して拒否ルールを作成します。

サイトでは、認証が基本認証とフォーム認証を有効にします。他のすべての認証タイプを無効にします。これにより、すべてのユーザーが基本認証を使用して基本サイトを使用して認証され、カスタム認証が必要なサイトの部分にフォームのログインが必要になります。

+0

ありがとうございます。私はそれを試みましたが、同じ問題があります。問題は、[AllowAnonymous]属性が追加されたASP.NETページ(コントローラ)でログインが必要な問題です。http://blogs.msdn.com/b/rickandy/archive/2012/03/23/ secure-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute.aspxを使用します。 – DaveO

+0

私はMVC3を使用しており、これが "On My Machine"で動作するようになっています。上記の構成では、カスタムLogonAuthorize:AuthorizeAttributeフィルターを使用して、一部のコントローラーをフィルター処理から除外しています。 if(!(filterContext.ControllerがAccountControllerの場合)) { base.OnAuthorization(filterContext); }。私はこれがAllowAnonymous属性(MVC4に移動するときに使用する)とどのように作用するのかよく分かりません。 – AlexC

+0

上記のコードで示したようにコントローラのチェックを追加しようとしましたが、同じ問題が残っています。(私は、httpモジュールやHTTPモジュールが必要だと思います。 "チャレンジベースの認証方法とこれは一時的な状況なので、混在した認証処理の複雑さや、httpモジュールを書くのは本当に掘り下げたいとは思っていません! /Asp.Netは、グローバル・ブロック(基本認証)を処理することができず、フォーム・ログインがdbに基づいている場合にフォームベースのログインを行います。 – DaveO