Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 身份验证后,页面重定向回登录页面_Asp.net_Authentication_Login_Authorization - Fatal编程技术网

Asp.net 身份验证后,页面重定向回登录页面

Asp.net 身份验证后,页面重定向回登录页面,asp.net,authentication,login,authorization,Asp.net,Authentication,Login,Authorization,我有一个简单的登录页面,如下所示: protected void btnLogIn_Click(object sender, EventArgs e) { FormsAuthentication.Initialize(); string CS = ConfigurationManager.ConnectionStrings["IS"].ConnectionString; using (SqlConnection con = new SqlConnection(CS

我有一个简单的登录页面,如下所示:

   protected void btnLogIn_Click(object sender, EventArgs e)
{
    FormsAuthentication.Initialize();

    string CS = ConfigurationManager.ConnectionStrings["IS"].ConnectionString;
    using (SqlConnection con = new SqlConnection(CS))
      {
        con.Open();
        SqlCommand cmd = new SqlCommand("Select Roles from tblRegisteredUsers where Email=@Email and Password=@Password",con);
        cmd.Parameters.AddWithValue("@Email", txtEmail.Text);
        cmd.Parameters.AddWithValue("@Password", txtPassword.Text);
        SqlDataReader rdr = cmd.ExecuteReader();
        if(rdr.Read())
        {
            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
                txtEmail.Text,
                DateTime.Now,
                DateTime.Now.AddMinutes(30),
                true,
                rdr.GetString(0),
                FormsAuthentication.FormsCookiePath);
            string hash = FormsAuthentication.Encrypt(ticket);

            HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,hash);
            if(ticket.IsPersistent) cookie.Expires=ticket.Expiration;
            Response.Cookies.Add(cookie);

            string returnUrl = Request.QueryString["returnUrl"];
            if(returnUrl==null) returnUrl="/";
            Response.Redirect(returnUrl);
        }
        else
        {
            lblMessage.Text = "Invalid Email/Password.Please try again.";
        }
        rdr.Close();
    }
}
我对每个文件夹都使用了文件夹级角色身份验证,每个文件夹都有自己的web.config文件。我确信用户成功地通过了身份验证,因为用户可以在loginName中看到用户名。这肯定是一个重定向问题。成功登录后,我如何将用户重定向到我的主页


还有人在这方面帮我吗?

只是一个建议。您可以重定向到主页,或者在需要时创建一个全局变量,并在其中维护上次访问的页面url。希望对您有所帮助

我认为您的查询字符串获取空值,这就是为什么它统计IF条件并将返回URL作为“/”的原因,因此它重定向到当前页面

在突出显示的部分附近放置一个调试点,查看返回url的值,而不是

string returnUrl = Request.QueryString["returnUrl"];
        if(returnUrl==null) returnUrl="/";
        Response.Redirect(returnUrl);
只要写

 Response.Redirect(<"your url for the homepage">);
Response.Redirect();
乙二醇


对于MVC应用程序,它将是
Response.Redirect(“/home/index”)

您必须重定向到另一个页面,如下所示:

Response.Redirect("myhomepage.aspx");

与MVC中需要提供URL的页面不同,您需要在页面末尾提供.aspx扩展名。

returnUrl
请求参数传入了什么值?@RobbyCornelissen-我没有看到任何指定returnUrl请求参数的内容。您一定是在谈论querystring请求权?那么,我在哪里分配它呢?您将在这里获得
returnUrl
request参数:
string returnUrl=request.QueryString[“returnUrl”]我理解。但我如何确定用户每次登录时的值是多少?好吧,对于初学者,添加一条调试语句以查看您收到的实际值是多少。如果是某种形式的登录URL,那么这就是问题的原因。您是否尝试了静态URL作为响应。重定向还是在“返回URL”中?