2013-03-22 52 views
2

我搜索了Google & SO帖子,但無法獲得解決我的問題的任何結果。使用web.config拒絕訪問網頁

我的web.config是:

<location path="~/reports/PayPeriodQtrReport.aspx, ~/reports/PayPeriodDetailReport.aspx"> 
    <system.web> 
    <authorization> 
     <allow roles="PayrollReports"/> 
     <deny users="*"/> 
    </authorization> 
    </system.web> 
</location> 

<location path="~/reports/ManifestAnnualReport.aspx, ~/reports/ManifestDetailedReport.aspx"> 
    <system.web> 
    <authorization> 
     <allow roles="ManifestReports"/> 
     <deny users="*"/> 
    </authorization> 
    </system.web> 
</location> 

授權工作的要求(意爲「PayrollReports」角色的人,是不是能看到菜單項的清單報告和一個人用「ManifestReports 「角色無法在菜單項中看到工資報告)。

問題:
與「PayrollReports」角色的用戶,我可以鍵入我的網址 http:\\mysite.com\reports\ManifestDetailedReport.aspx和頁面顯示出來。應顯示的內容是:unauthorizedaccess.aspx

同樣,作爲具有「ManifestReports」角色的用戶,我可以輸入到我的網址http:\\mysite.com\reports\PayPeriodQtrReport.aspx並顯示頁面。什麼應顯示爲unauthorizedaccess.aspx

問: 使用web.config中,我怎麼能防止用戶通過在URL中鍵入黑客進入的頁面?

回答

5

你需要把每個文件在自己的location進入和刪除~/

<location path="reports/PayPeriodQtrReport.aspx"> 
    <system.web> 
    <authorization> 
     <allow roles="PayrollReports"/> 
     <deny users="*"/> 
    </authorization> 
    </system.web> 
</location> 

等等

這裏假設你正在使用RoleProvider。要麼使用內置的RoleProvider,要麼使用自定義的RoleProvider,它繼承自RoleProvider,並在web.config中正確指定。

+0

這正是我所做的...... – Csharp 2013-03-22 20:21:22

+1

您是否使用了正確的RoleProvider?你如何確定誰在哪個角色? – MikeSmithDev 2013-03-22 20:22:44

+0

「網站管理工具」中定義了哪些角色。我如何確定應用程序是否使用RoleProvider(應用程序是由另一個開發人員編寫的)? – Csharp 2013-03-22 20:25:42