2009-07-28 535 views
1

我已經在ASP.Net中創建了一個身份驗證模塊,但是我不希望在驗證模塊中的邏輯被執行,如果資源配置爲匿名訪問,因爲邏輯很貴。Asp.Net身份驗證模塊

有些頁面需要在不需要認證的頁面的同一目錄中進行認證。我無法控制這一點。有沒有簡單的方法來確定資源配置爲允許在URLAuthorizationModule之前進行匿名訪問?

目前,我正在做的「感覺」是正確的以下內容。任何幫助,將不勝感激。

public static bool AllowEveryone() 
     { 
      bool rslt = false; 

      AuthorizationSection config = (AuthorizationSection)WebConfigurationManager.GetSection("system.web/authorization"); 
      if (config.Rules != null && config.Rules.Count > 0) 
      { 

       AuthorizationRule r = config.Rules[0]; //doing this based on implementation of urlauthorization module in reflector... 
       if (r.Action == AuthorizationRuleAction.Allow && r.Users.Contains("*")) 
       { 
        return true; 
       } 

       //todo: check for allow anon ? case 


      } 

      return rslt; 
     } 
+0

對不起,我不清楚。該頁面已根據您的描述進行配置。但是,我有一個自定義身份驗證模塊。如果頁面配置爲允許用戶=「*」或允許用戶=「?」,我想在知道用戶身份之前退出模塊邏輯。 – complexcipher 2009-07-28 15:01:24

回答

2

我不知道你的代碼如何適應成員資格和角色提供系統,但你有沒有試圖把每個網址覆蓋在web.config文件?

<location path="MyAnonymousPage.aspx"> 
    <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
    </system.web> 
</location> 
0

在常規的ASP.Net網站這可以用下面的代碼來完成:

IPrincipal anonUser = new GenericPrincipal(new GenericIdentity(string.Empty, string.Empty), new string[0]); 

bool allowAnon = UrlAuthorizationModule.CheckUrlAccessForPrincipal(requestPath, anonUser, "get"); 

不過,我有得到它像預期的那樣在SharePoint中的問題。