1

我有一個Forms Authenticated Web應用程序,但是我需要基本身份驗證,這些服務都位於特定路徑(即「〜/ Services /」 )。表單在特定文件夾/路徑上使用基本身份驗證驗證的Web應用程序

我最初試圖在web.config有一個單獨定製的MembershipProvider添加標籤的路徑,像這樣:

<location path="Services"> 
    <system.web> 
     <authentication mode="None" /> 
     <authorization> 
     <deny users="?" /> 
     </authorization> 
     <membership defaultProvider="ServicesMembershipProvider"> 
     <providers> 
      <add name="DefaultMembershipProvider" type="Company.WebProject.DeviceMembershipProvider" connectionStringName="DefaultConnectionString" applicationName="/" /> 
     </providers> 
     </membership> 
     <httpModules> 
     <add name="BasicAuthentication" type="Company.WebProject.BasicAuthenticationModule" /> 
     </httpModules> 
    </system.web> 
    </location> 

但是,這是引發錯誤:

這是一個錯誤在應用程序級別之外使用註冊爲allowDefinition ='MachineToApplication'的部分。此錯誤可能是由於虛擬目錄未被配置爲IIS中的應用程序。

因此,我意識到我不允許在location元素中使用身份驗證元素。

在閱讀this文章後,我嘗試連接Global.asax中的FormsAuthentication_OnAuthenticate方法。由於我需要使用基本身份驗證,因此我嘗試返回401以提示瀏覽器提供基本身份驗證憑據。不幸的是,這似乎是導致重定向到頁面上的表單身份驗證日誌(即loginUrl)。

public void FormsAuthentication_OnAuthenticate(object sender, FormsAuthenticationEventArgs e) 
{ 
    string path = VirtualPathUtility.ToAppRelative(e.Context.Request.Path); 
    if (path.Contains("/Services/")) 
    { 
     e.Context.Response.StatusCode = 401; 
     e.Context.Response.AddHeader("WWW-Authenticate", string.Format("Basic realm=\"{0}\"", "CompanyRealm")); 
     e.Context.Response.End();     
    } 
} 

所以現在我已經爲如何在通過身份驗證的Web應用程序窗體文件夾上實現基本驗證江郎才盡。

有沒有人有任何想法如何實現這一目標?

回答

0

您不能在ASP.NET中混合使用Forms AuthenticationWindows Authentication。您將需要爲兩者創建一個單獨的應用程序,或者您需要實施Forms AuthenticationRoles才能正確執行分層訪問。

+0

感謝您的迴應,雖然如果你谷歌它,你會發現網上有幾個解決方案混合形式認證和Windows身份驗證。不幸的是,我需要Forms Auth和Basic Auth(而不是Windows Auth)。我知道我可以創建單獨的應用程序,但這不是我理想的解決方案。 – 2012-07-19 16:01:41

0

有點晚了一天,但我已經張貼在這裏的一些代碼: Combining Forms Authentication and Basic Authentication

基本上你只需要

e.Context.Response.Flush(); 
e.Context.Response.Close(); 

更換

e.Context.Response.End(); 

關閉響應對象似乎阻止ASP覆蓋重定向。請參閱上面的鏈接瞭解完整的代碼。

相關問題