我搜索了Google& SO帖子,但无法获得解决我的问题的任何结果。
我的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>
授权按要求工作(意味着具有&#34; PayrollReports&#34;角色的人员,无法在菜单项中看到清单报告,而且#34; ManifestReports&#34;角色不是能够在菜单项中看到工资报告)。
问题:
作为用户使用&#34; PayrollReports&#34;角色,我可以输入我的网址
http:\\mysite.com\reports\ManifestDetailedReport.aspx
,页面显示出来。应该显示的是unauthorizedaccess.aspx
同样,作为具有&#34; ManifestReports&#34;的用户角色,我可以输入我的网址http:\\mysite.com\reports\PayPeriodQtrReport.aspx
,页面会显示出来。应该显示的是unauthorizedaccess.aspx
问题: 使用web.config,如何通过输入url来阻止用户入侵页面?
答案 0 :(得分: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中正确指定。