2010-02-19 45 views
3

我想使用web.config內置的內置目錄安全功能來限制對父頁面的子頁面的訪問。我的結構如下:使用web.config目錄安全性和擴展名網址

  • 成員
  • 會員/新聞
  • 會員/新聞
  • 會員/電影

用戶應該能夠有機會獲得各成員父頁面,但不是子頁面。我的問題是,因爲我使用無擴展名的URL,web.config認爲這是一個目錄,因此訪問被阻止。有沒有辦法說只限制訪問子頁面?

回答

3

這個配置應該可以做到。它爲整個網站啓用匿名訪問,除了額外的位置 - 他們需要經過身份驗證的用戶才能工作。

<configuration> 
    <system.web> 
     <authentication mode="Forms"> 
      <forms loginUrl="Login" defaultUrl="Members" /> 
     </authentication> 
     <authorization> 
      <allow users="?" /> 
     </authorization> 
    </system.web> 

    <location path="Members/News"> 
     <system.web> 
      <authorization> 
       <deny users="?" /> 
       <allow users="*" /> 
      </authorization> 
     </system.web> 
    </location> 

    <location path="Members/Press"> 
     <system.web> 
      <authorization> 
       <deny users="?" /> 
       <allow users="*" /> 
      </authorization> 
     </system.web> 
    </location> 

    <location path="Members/Movies"> 
     <system.web> 
      <authorization> 
       <deny users="?" /> 
       <allow users="*" /> 
      </authorization> 
     </system.web> 
    </location> 

</configuration> 
+0

嗨。雖然這有效,但我希望能夠以某種方式做到這一點,只需在「成員」級別定義它(如擴展名爲.aspx時的工作原理),因爲子頁面是通過CMS進行管理的,所以我可以「保證子頁面是什麼。 – 2010-03-15 15:01:14

+1

我不知道元素是否支持通配符(您是否試過來查看它的行爲方式?)。 如果您需要通配符授權,也許您可​​以編寫自己的HttpModule來爲您授權。 看看這個人實現了他自己的基本CustomUrlAuthorizationModule:http://forums.asp.net/t/1346678.aspx – 2010-03-15 23:29:03

+0

location屬性不支持通配符,因爲這是我嘗試的第一件事情之一。 CustomUrlAuthorizationModule雖然可能是個問題。我會進一步研究。感謝您的幫助。 – 2010-03-16 10:01:43