2012-07-20 151 views
1

我试图未经授权的用户重定向到一个自定义页面时,他们正在访问的页面管理员,但我得到的错误..重定向未授权的用户自定义页面错误

的Web.config文件夹管理员

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <authorization> 
     <allow roles="Administrators" /> 
     <deny users="*"/> 
    </authorization> 
    </system.web> 
</configuration> 

登录页面代码:

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       if (Request.IsAuthenticated && !string.IsNullOrEmpty(Request.QueryString["ReturnUrl"])) 
        Response.Redirect("~/ErrorUNTH.aspx"); 
      } 
} 

错误洛为普通用户和访问管理页面后:

Server Error in '/' Application. 
Runtime Error 
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine. 

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off". 


<!-- Web.Config Configuration File --> 

<configuration> 
    <system.web> 
     <customErrors mode="Off"/> 
    </system.web> 
</configuration> 


Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL. 


<!-- Web.Config Configuration File --> 

<configuration> 
    <system.web> 
     <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/> 
    </system.web> 
</configuration> 
+0

您正在收到一般错误消息。打开自定义错误并将正确的错误消息附加到您的帖子中。 – 2012-07-20 10:39:24

+0

我们无法猜出错误,您需要禁用自定义错误。在''下面添加这个配置'',让我们知道具体的错误。这也是一个好主意,你允许调试' Jupaol 2012-07-20 10:39:46

+0

我这样做,我得到相同的错误 – Jax 2012-07-20 10:44:10

回答

2

删除<deny users="*"/>并添加<deny users="?"/>

  1. ? - 匿名用户
  2. * - 所有用户

而且还删除Page_Load事件的代码。

如果用户没有登录,则会自动重定向到login.aspx。看看根web.config<authentication>部分。

<authentication mode="Forms"> 
     <forms loginUrl ="mylogin.aspx"/> <!-- You can change the url --> 
</authentication> 
+0

是的,但我想将未经授权重定向到某个页面而不是登录页面 – Jax 2012-07-20 10:42:32

+0

请参阅我编辑的帖子。 – adatapost 2012-07-20 10:45:30

0

你可以操纵的“401次拒绝访问”的回应内容(如果是这种情况)在Global.asax.cs中的Application_EndRequest事件添加以下代码:

protected void Application_EndRequest(Object sender, 
              EventArgs e) 
    { 
    HttpContext context = HttpContext.Current; 
    if (context.Response.Status.Substring(0,3).Equals("401")) 
    { 
     context.Response.ClearContent(); 
     context.Response.Write("<script language="javascript">" + 
        "self.location='../login.aspx';</script>"); 
    } 
    } 

当浏览器可识别401,并且没有客户端重定向将发生的凭据。浏览器将显示一个自定义的401页面。

相关问题