2014-12-04 82 views
0

我在我的web.config文件中为每个目录中的每个页面都设置了一些访问设置,如下所示。将用户重定向到被拒绝的自定义访问页面

<location path="orderForm.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="AdmStf" /> 
     <allow roles="OrdPage" /> 

     <deny users="*,?"/> 
     </authorization> 
    </system.web> 
    </location> 

这很好。但是,当用户没有正确的访问级别时,用户会自动定向到根目录下的Default.aspx页面。

我想要做的,实际上是发送用户到一个自定义的AccessDenied.aspx页面。

在我的主web.config文件我有以下...

<customErrors mode="On" defaultRedirect="~/Views/Err/Error.aspx"> 
    <error statusCode="401" redirect="~/Views/Err/AccessDenied.aspx" /> 
</customErrors> 

但是这是行不通的,因为我预料到。用户仍然定向到Default.aspx页面。

有没有办法实现我想要的?

+0

不要在错误情况下重定向用户 - 而是使用401响应标头提供错误响应,否则浏览器或其他UA将无法识别出响应确实是错误。 – Dai 2014-12-04 11:52:46

+0

你是如何做到这一点的? – Stuart 2014-12-04 11:53:39

+0

我在互联网上看到的所有东西似乎指向这样做,所以我不确定为什么这不起作用,它通常被标记为问题的答案... – Stuart 2014-12-04 13:01:33

回答

1

您可以检查此(customerrors for 401.2 in ASP.NET

作为一种变通方法,您可以在Global.asax中Authenication_Request事件处理它,并重定向未授权的用户

但是,我的建议是重定向未授权请求登录在页面中。因为请求者可能被授权但忘记登录。所以你的方法会增加额外的步骤。

相关问题