我有一个公共(无身份验证)网站,但需要身份验证的一个页面除外。这很好。
受保护的页面位于包含以下web.config的文件夹中:
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Warehouse" />
<deny users="*" />
</authorization>
<customErrors mode="RemoteOnly" defaultRedirect="../WebForbidden.aspx">
<!--<error statusCode="403" redirect="WebForbidden.aspx" />
<error statusCode="404" redirect="FileNotFound.htm" />-->
</customErrors>
</system.web>
</configuration>
该页面的主文件包含以下内容:
protected void Page_Init(object sender, EventArgs e)
{
CheckLogged();
}
public bool CheckLogged()
{
bool status = false;
if (Session["Username"] == null)
{
FormsAuthentication.SignOut();
Response.Redirect("../WebForbidden.aspx");
//FormsAuthentication.RedirectToLoginPage();
}
else
{
status = true;
}
return status;
}
我在网站的根目录中有WebForbidden.aspx页面。
现在,每次我尝试直接进入受保护的页面(除非经过身份验证都禁止),而不是显示“禁止访问”页面,会显示错误:The resource cannot be found
,当然网站正在尝试重定向到登录页面,不存在。
任何帮助将不胜感激。
答案 0 :(得分:1)
尝试告诉表单身份验证重定向到WebForbidden.aspx
,而不是让它使用默认值,如果您没有指定,则会查找Login.aspx
<system.web>
<authentication mode="Forms">
<forms loginUrl="WebForbidden.aspx" />
</authentication>
</system.web>