C# 如何在登录后重定向到上一页
在loggin控件中,我在登录后将用户重定向到同一url。在评论控件中,当未注册或未登录的用户尝试发表评论时,我会在登录控件中向他显示重定向hin的消息。现在我需要在登录后再次将他重定向回评论页面,但我遇到了大麻烦 以下是我的代码: login.ascx.csC# 如何在登录后重定向到上一页,c#,asp.net,C#,Asp.net,在loggin控件中,我在登录后将用户重定向到同一url。在评论控件中,当未注册或未登录的用户尝试发表评论时,我会在登录控件中向他显示重定向hin的消息。现在我需要在登录后再次将他重定向回评论页面,但我遇到了大麻烦 以下是我的代码: login.ascx.cs protected void btnLogin_Click(object sender, EventArgs e) { try { txtPassword.Text = ob
protected void btnLogin_Click(object sender, EventArgs e)
{
try
{
txtPassword.Text = obj.Encrypt(txtPassword.Text.Trim(), true);
MySqlCommand cmd = new MySqlCommand("Select id,username,password From registration where username=@UserName And password= @password ", con);
cmd.Parameters.AddWithValue("@UserName", txtusername.Text);
cmd.Parameters.AddWithValue("@password", txtPassword.Text);
//MySqlDataAdapter da1 = new MySqlDataAdapter("select id,username from registration where username='" + txtusername.Text + "'", con);
con.Open();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
string message = null;
if (dt.Rows.Count > 0)
{
String t1 = dt.Rows[0]["id"].ToString();
String username = dt.Rows[0]["username"].ToString();
Session["UserId"] = t1;
Session["username"] = username;
Uri MyUrl = Request.UrlReferrer;
Console.WriteLine(MyUrl);
if (MyUrl != null)
HttpContext.Current.Request.UrlReferrer.ToString();
string userName = Session["username"].ToString();
//pnllogin.Visible = false;
message = "Hello " + userName + ", Welcome to our website.";
//Page.ClientScript.RegisterStartupScript(this.GetType(), "Popup", "ShowPopup1('" + message + "');", true);
}
else
{
message = "Sorry You cannot login, please provide correct Email and password";
}
Page.ClientScript.RegisterStartupScript(this.GetType(), "Popup", "ShowPopup('" + message + "');", true);
}
comment.ascx.cs
受保护的无效BTN注释\u单击(对象发送方,事件参数e)
{
尝试
{
if(会话[“userid”]!=null)
{
main AddComment=new main();
string mandir_id=Request.QueryString[“id”]
}在将未经身份验证的用户实际重定向到登录页面之前,为什么不引入类似于
会话[“returnPath”]=Request.RawUrl;
的内容,然后在用户获得身份验证时:
if (!string.IsNullOrWhiteSpace(Session["returnPath"]))
Response.Redirect(Session["returnPath"]);
此外,ASP.NET MVC使用了一个
returnUrl
URL参数,而不是一个有会话价值的参数。因此,您的登录URL看起来像:http://www.example.com/Login?returnUrl=/the-您所在的页面.aspx
。似乎运行得很好。在将URL重定向到登录之前,为什么不在会话中存储URL?我不明白您的意思。p请给我解释清楚,谢谢。在评论控制中,当未注册或未登录的用户尝试发表评论时,我会向他显示一条消息,在登录控制中重定向hin。
如果我理解正确,您允许用户访问评论,但在尝试发布时,您会将他们重定向到登录,对吗?是的,我也这样做了,并且完成了工作。谢谢uch.@Dan-o感谢编辑Dan,但他似乎正在创建自己的成员身份。@user3247426不用担心。@nphx:我意识到,我只是提供了一个会话选项的替代选项(url参数)。你的帖子解释了如何实现重定向,所以我刚刚编辑了你的帖子。希望你不介意。@Dan-o啊,现在我知道你试图建议重新实现查询字符串选项,而不是像已经存在一样使用它;)
if (!string.IsNullOrWhiteSpace(Session["returnPath"]))
Response.Redirect(Session["returnPath"]);