2012-08-11 148 views
5

我有一個網站,需要通過基於表單的身份驗證進行登錄,需要使用我自己的提供程序連接到數據庫。在ASP.NET MVC3中混合基本身份驗證和表單身份驗證

該網站是預覽,所以我想通過基本身份驗證保護整個網站,以防止未經授權的訪問,直到它上線。

問題是,當基本和表單身份驗證位於將被公開的頁面上時,將轉到表單登錄。

如何保持會員登錄和門戶網站訪問的基於表單的身份驗證,但通過使用基本身份驗證保護整個網站免於公開訪問?

回答

0

我認爲你應該能夠以下面的方式來滿足你的用例。

在.Net授權規則中爲匿名用戶創建拒絕規則。

在該站點身份驗證啓用基本和表單身份驗證。禁用所有其他認證類型​​。這應該要求所有用戶通過基本身份驗證進行身份驗證才能使用基本站點,然後要求表單登錄到需要進行自定義身份驗證的站點部分。

+0

謝謝亞歷克斯。我試過,但有同樣的問題。問題在於所有的ASP.NET頁面(控制器)都需要登錄,即使是那些添加了[AllowAnonymous]屬性的,也在這裏描述:http://blogs.msdn.com/b/rickandy/archive/2012/03/23/確保-您-ASP淨MVC-4-APP-和最新使用AllowAnonymous-attribute.aspx。 – DaveO 2012-08-16 09:27:22

+0

我一直在使用MVC3,並得到這個工作「在我的機器上」,我知道沒有幫助。通過上面的配置,我有一個自定義的LogonAuthorize:AuthorizeAttribute過濾器,它排除了某些控制器需要過濾。 if(!(filterContext.Controller is AccountController)) { base.OnAuthorization(filterContext); }。我不確定這將如何與AllowAnonymous屬性交互(我將在使用MVC4時使用該屬性)。 – AlexC 2012-08-16 10:02:51

+0

我試着在上面的代碼中添加了一個控制器的檢查,但仍然是同樣的問題:(我認爲我需要一些http模塊,或者IIS抱怨「你不能同時使用基於挑戰的身份驗證方法和一個基於登錄重定向的身份驗證方法「,這是一種暫時的情況,所以我不想深入瞭解混合身份驗證處理或編寫http模塊的複雜性,只要我能幫助它!對我來說IIS很奇怪,IIS /Asp.Net無法處理全局塊(基本身份驗證),並在我的表單登錄基於數據庫時基於表單登錄。 – DaveO 2012-08-16 11:50:32