asp.net - 未显示登录用户名

标签 asp.net login

我开发了一个 ASP.NET Web 应用程序。登录页面和注销功能正常工作。我添加了一个新方法来显示登录的用户名。添加此方法后,我无法登录到我的应用程序。我认为我没有正确添加此方法。
Login
你能帮忙吗?

登录.aspx

protected void btnLogin_Click(object sender, EventArgs e) 
{
  try 
  {
    DataTable dtUser = UserRegistration.GetUserByUserName(txtUserName.Text, txtPassword.Text);
    if (dtUser.Rows.Count > 0) 
    {
      lblSuccessMessage.Text = "Login Successful!";

      oLoginData = txtUserName.Text;

      Session["intUserId"] = dtUser.Rows[0]["intUserId"].ToString();
      Session["DisplayName"] = dtUser.Rows[0]["DisplayName"].ToString();
      Response.Redirect("~/WebForms/Home/Home.aspx");

    } 
    else 
    {
      lblErrorMessage.Text = "Incorrect User Name or Password";
      txtUserName.BackColor = System.Drawing.Color.LavenderBlush;
      txtPassword.BackColor = System.Drawing.Color.LavenderBlush;
      return;
    }
  } 
  catch 
  {
    lblErrorMessage.Text = "Incorrect User Name or Password";
    txtUserName.BackColor = System.Drawing.Color.LavenderBlush;
    txtPassword.BackColor = System.Drawing.Color.LavenderBlush;
    return;
  }
}
}

Site.Masters.cs
protected void Page_Load(object sender, EventArgs e) 
{
  if ((Session["intUserId"] == null)) 
  {
    FormsAuthentication.SignOut();
    Response.Redirect("~/Login.aspx");
  } 
  else 
  {
    //lblLocation.Text = Session["LocationName"].ToString();
    lblUser.Text = "Logged User :" + Session["DisplayName"].ToString();
  }
}

GetUserByUserName
 public static DataTable GetUserByUserName(string UserName, string Password)
        {
            DataTable dsResult = new DataTable();
            try
            {


                String strConnString = ConfigurationManager.ConnectionStrings["TCDMSConnection"].ConnectionString;
                SqlConnection con = new SqlConnection(strConnString);
                SqlCommand com = new SqlCommand();
                SqlDataAdapter da = new SqlDataAdapter();

                con.Open();
                com.Connection = con;
                com.CommandType = CommandType.StoredProcedure;
                com.CommandText = "spUserValidation";

                SqlParameter[] sqlParam = new SqlParameter[2];

                sqlParam[0] = new SqlParameter("@Username", UserName);
                sqlParam[1] = new SqlParameter("@Password", Password);

                if (sqlParam != null)
                {
                    com.Parameters.AddRange(sqlParam);
                }

                da.SelectCommand = com;
                da.Fill(dsResult);

                con.Close();

                return dsResult;

            }
            catch (Exception ex)
            {
                throw (ex);
            }




        }


    }

Image

最佳答案

如果您的登录页面 Login.aspx正在使用相同的母版页 Site.Master那么你似乎有一个重定向循环。

当您转到应用程序时,您会被重定向到 Login.aspx因为您还没有登录。当Login.aspx正在加载,这部分:

if ((Session["intUserId"] == null))
{
    FormsAuthentication.SignOut();
    Response.Redirect("~/Login.aspx");
}

母版页将执行并导致重定向回 Login.aspx ,这将导致整个事情重复。

浏览器会注意到请求被多次重定向,最终会放弃并显示某种页面无法显示错误。

要修复它,如果当前正在运行的页面已经是 Login.aspx,您需要避免重定向。 .例如像这样(在 Site.Master.cs 中):
protected void Page_Load(object sender, EventArgs e)
{
    if (!Request.CurrentExecutionFilePath.ToLower().EndsWith("login.aspx"))
    {
        if ((Session["intUserId"] == null))
        {
            FormsAuthentication.SignOut();
            Response.Redirect("~/Login.aspx");
        }
        else
        {
            lblUser.Text = "Logged User :" + Session["DisplayName"].ToString();
        }
    }
}

关于asp.net - 未显示登录用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37436068/

相关文章:

asp.net - 在 web.config 中设置要加载的 DLL 的位置

c# - asp.net API 中的 JSON 字符串参数中不允许使用 ascii

Javascript 连接表格单元格 ASP.NET MVC

c# - 如何以编程方式登录共享点

login - xrdp_mm_process_login_response : login failed

jsp - 使用 Java 中的过滤器验证用户名、密码(与数据库联系)

php - PHP登录错误:

javascript - 从 jquery keypress 方法运行 Databind 方法

javascript - fb getloginstatus : FB is not defined

login - youtube 如何在不重定向的情况下登录到 Gmail 帐户?