0

我對ASP.NET Web窗體使用窗體身份驗證併成功驗證用戶身份。ASP.NET Web窗體授權允許匿名用戶訪問特定頁面

通過web.config中的這些授權設置,匿名用戶只能訪問登錄頁面。

<authorization> 
    <deny users="?" /> 
    </authorization> 

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

我試圖使用位置標記來進一步允許額外的頁面的匿名訪問,但它們將被忽略:

<location path="SubFolder/LoggedOut.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="?" /> 
     </authorization> 
    </system.web> 
    </location> 

繼ASP.NET設置繼承位置標記中的授權標記應覆蓋全局授權標記。

系統通過構建URL的所有規則的合併列表來確定哪個規則優先,列表頭部使用最近的規則(層次結構中最近的規則)。 (link

我怎麼能拒絕所有的網頁,但那些我指定的匿名訪問?

對此question的回答表明我所做的是正確的。但它似乎不適合我。那麼爲什麼會發生?有沒有辦法找出當我嘗試訪問一個頁面時設置阻止訪問的設置?有什麼我失蹤?

回答

0

顯然,限制較少的文件不能位於受限制的目錄中。 但是,對限制較少的目錄也是這樣。

最後我用下面的web.config文件放置在根目錄下的公共文件和所有安全文件中的子文件夾:

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

在.NET框架4.5測試時,Visual Studio 2015年企業

相關問題