我正在asp.net中的一个简单网站上工作。
我想限制访问该端,以便仅允许特定AD组中的用户。我已经做到了,并且工作正常。但是,当不在AD组中的用户尝试访问该站点时,他们会收到登录提示。如何将未经授权的用户重定向到自定义页面,而不是获得登录提示?
以下是我的web.config。代码的最下部是我尝试过但没有起作用的部分。
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Windows"/>
<authorization>
<allow roles="DOMAIN\GROUP"/>
<deny users="*"/>
</authorization>
</system.web>
<location path="AccessDenied.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
</configuration>
我已将其添加到Global.asax.cs中:
protected void Application_EndRequest(Object sender, EventArgs e)
{
if (HttpContext.Current.Response.Status.StartsWith("401"))
{
HttpContext.Current.Response.ClearContent();
Server.Execute("AccessDenied.aspx");
}
}
有任何想法吗 ?
编辑:
我尝试了一些发布的解决方案,但是它们没有用。
但是我可以使用以下代码:
void Application_EndRequest(object sender, System.EventArgs e)
{
if (((Response.StatusCode == 401)
&& (Request.IsAuthenticated == true)))
{
Response.ClearContent();
Response.Redirect("~/AccessDenied.aspx");
}
}
}
最佳答案
您可以使用 Response.Redirect
或 Server.Transfer
Response.Redirect("AccessDenied.aspx");
完整示例:
protected void Application_EndRequest(Object sender, EventArgs e)
{
if (HttpContext.Current.Response.Status.StartsWith("401"))
{
HttpContext.Current.Response.ClearContent();
Response.Redirect("AccessDenied.aspx");
}
}
关于c# - 重定向未经授权的用户ASP网络,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18652934/