当身份验证失败时,重定向到主页面中的页面

时间:2013-08-09 13:53:50

标签: c# asp.net session

对于我的Web应用程序,我使用的是Windows身份验证。我在Global.asax页面的Session_Start事件中编写了以下代码;如果登录用户有效,我将这些细节存储在会话中

Session["UserDetails"] = "XXXX";

如果用户无效,则

Session["UserDetails"] = null;

然后在我的MasterPage中,我使用以下代码

if(!IsPostBack)
{ 
    if(Session["UserDetails"] == null)
    {
        Response.Redirect("AuthenticationFailure.aspx");
    }
}

但是,它没有重定向到该特定的失败页面。当我在每个aspx页面加载中检查相同的条件时,它似乎工作正常,但页面未被重定向。

这里可能出现什么问题?我应该如何重定向到AuthenticationFailure页面才能使其正常工作?

1 个答案:

答案 0 :(得分:0)

由于您的AuthenticationFailure页面正在使用在未经过身份验证的情况下重定向的母版页,因此该页面将永远不会显示,因为它将在到达页面之前重定向。

要么在母版页的代码中处理此问题,要么不要使用母版页作为authenticationfailure页面。

您可以使用Request.FilePath变量检查请求的路径,如果它已经在AuthenticationFailure页面,则避免重定向。

if(!IsPostBack)
{ 
    const string FailurePage = "AuthenticationFailure.aspx";
    string page = Request.FilePath.Substring(Request.FilePath.LastIndexOf('/'));
    if(Session["UserDetails"] == null && page != FailurePage)
    {
        Response.Redirect(FailurePage);
    }
}