2013-03-22 81 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