拒绝使用web.config访问网页

时间:2013-03-22 20:02:17

标签: asp.net authentication web-config forms-authentication

我搜索了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来阻止用户入侵页面?

1 个答案:

答案 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中正确指定。