【发布时间】:2016-01-07 10:43:30
【问题描述】:
我正在使用表单身份验证。
在根 web.config 中有 ...
<authentication mode="Forms">
<forms loginUrl="~/Auth/Login.aspx" timeout="2880" defaultUrl="~/Search.aspx" />
</authentication>
...因此,如果未经身份验证的用户被拒绝访问,则通过子文件夹的 web.config 中类似以下的条目...
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
...然后未登录的用户被重定向到 Login.aspx 页面。
第一个问题
如果未经身份验证的用户请求某些(但不是全部)页面,或从一个子文件夹(但不是另一个)请求文件,我想通过返回 HTTP 403 而不是将它们(HTTP 302)重定向到登录来拒绝访问页面。
我该怎么做?目前未经身份验证的用户总是被重定向到登录页面,而不是被简单地拒绝访问。
第二个问题
我还使用“基于角色”的权限,例如我有一个名为 Supervisors 的角色。
对某些文件夹的访问仅供主管使用,因此这些文件夹具有类似的网络配置
<system.web>
<authorization>
<allow roles="Supervisor"/>
<deny users="*"/>
</authorization>
</system.web>
如果没有主管角色的经过身份验证(登录)的用户尝试访问,他们也会被重定向到登录页面(尽管他们已经登录)。
我能否以某种方式更改它(例如返回 HTTP 403,或重定向到其他失败页面)?
【问题讨论】:
标签: asp.net web-config asp.net-4.0