我的if语句有什么问题

时间:2014-06-04 06:34:30

标签: asp.net if-statement login membership

请帮助查看此代码,即使用户未处于角色应用状态也无法将用户重定向到status.aspx

if (!User.Identity.IsAuthenticated || !User.IsInRole("apply") || Session["ctre"].ToString() != "Court" || Session["userName"].ToString() == null)
        {
            if (!User.Identity.IsAuthenticated || Session["userName"].ToString() == null)
            {
                Response.Redirect("Login.aspx");
            }
            else
            {
                Response.Redirect("status.aspx");
            }
        }

3 个答案:

答案 0 :(得分:0)

你的情况很糟糕。

尝试这个

if (!User.Identity.IsAuthenticated || !User.IsInRole("apply") || Session["ctre"].ToString() != "Court" || Session["userName"].ToString() == null)
    {

            Response.Redirect("Login.aspx");

       } else
        {
            Response.Redirect("status.aspx");
        }

答案 1 :(得分:0)

您的代码是

if (!User.Identity.IsAuthenticated || !User.IsInRole("apply") || Session["ctre"].ToString() != "Court" || Session["userName"].ToString() == null)
{
    if (!User.Identity.IsAuthenticated || Session["userName"].ToString() == null)
    {
        Response.Redirect("Login.aspx");
    }
    else
    {
        Response.Redirect("status.aspx");
    }
}

有两个if语句,两者都有类似的条件

!User.Identity.IsAuthenticated || ... Session["userName"].ToString() == null 
!User.Identity.IsAuthenticated ||     Session["userName"].ToString() == null 

这可能意味着第一个条件毫无意义,整个代码应该是

if (!User.Identity.IsAuthenticated || Session["userName"] == null)
    Response.Redirect("Login.aspx");
else
    Response.Redirect("status.aspx");

更新:

如果您需要检查角色,即“如果用户已经过验证但用户未处于角色中”,则“应该转到status.aspx而不是login.aspx”使用

if (!User.Identity.IsAuthenticated || Session["userName"] == null || User.IsInRole("apply"))
    Response.Redirect("Login.aspx");
else
    Response.Redirect("status.aspx");

答案 2 :(得分:0)

您的代码中存在重复,您可能会说它是代码冗余,请使用以下条件

if (!User.Identity.IsAuthenticated || Session["userName"] == null)
    Response.Redirect("Login.aspx");
else
    Response.Redirect("status.aspx");