Asp.net 登录后重定向到上一页

Asp.net 登录后重定向到上一页,asp.net,redirect,login,Asp.net,Redirect,Login,我已经使用Asp.Net Web表单创建了一个管理员网站。 当我和我的朋友共享我网站的一个页面(不是主页)的url时,当他在浏览器中输入url时,它会自动将他重定向到登录页面(这是正确的行为)。 当他输入用户名和密码时,它会重定向到主页,而不是我与他共享的url 我尝试在login.aspx上使用Request.urlreferer.PathAndQuery。 只有当用户有意退出系统时,它才起作用 基本上,我想通过邮件或其他方式共享一个链接(url),用户将打开它,如果他尚未登录,他将要求登录,

我已经使用Asp.Net Web表单创建了一个管理员网站。
当我和我的朋友共享我网站的一个页面(不是主页)的url时,当他在浏览器中输入url时,它会自动将他重定向到登录页面(这是正确的行为)。 当他输入用户名和密码时,它会重定向到主页,而不是我与他共享的url

我尝试在login.aspx上使用
Request.urlreferer.PathAndQuery

只有当用户有意退出系统时,它才起作用

基本上,我想通过邮件或其他方式共享一个链接(url),用户将打开它,如果他尚未登录,他将要求登录,一旦登录浏览器,他将显示url中的页面,而不是主页。

如果您使用,您可以在登录页面中使用
返回url
查询字符串:

var returnUrl = Request.QueryString["ReturnURL"];
if (string.IsNullOrEmpty(returnUrl)){
   returnUrl = "~/";
}
Response.Redirect(returnUrl);
Response.Cookies.Add(new HttpCookie("returnUrl", Request.Url.PathAndQuery));
Response.Redirect("login.aspx");
HttpCookie returnCookie = Request.Cookies["returnUrl"];
if((returnCookie == null) || string.IsNullOrEmpty(returnCookie.Value))
{
    Response.Redirect("Default.aspx");
}
else
{
    HttpCookie deleteCookie = new HttpCookie("returnUrl");
    deleteCookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(deleteCookie);
    Response.Redirect(returnCookie.Value);
}
如果您不使用它,您应该按照它的行为: 当您将用户重定向到登录页面时,请在referrer页面中添加查询字符串

//**Remember to url encode it!**
var returnUrl = Server.UrlEncode(Request.Url.PathAndQuery);
Response.Redirect("~/login.aspx?ReturnURL=" + returnUrl);

作为替代,您可以使用cookies。我更喜欢这种方法,因为它使地址栏更干净,看起来更优雅。此外,该过程对用户是透明的。这还可以防止一些恶意用户使用您的登录页面重定向到不需要的网站

在重定向到登录页面的代码中:

var returnUrl = Request.QueryString["ReturnURL"];
if (string.IsNullOrEmpty(returnUrl)){
   returnUrl = "~/";
}
Response.Redirect(returnUrl);
Response.Cookies.Add(new HttpCookie("returnUrl", Request.Url.PathAndQuery));
Response.Redirect("login.aspx");
HttpCookie returnCookie = Request.Cookies["returnUrl"];
if((returnCookie == null) || string.IsNullOrEmpty(returnCookie.Value))
{
    Response.Redirect("Default.aspx");
}
else
{
    HttpCookie deleteCookie = new HttpCookie("returnUrl");
    deleteCookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(deleteCookie);
    Response.Redirect(returnCookie.Value);
}
在您的登录页面中:

var returnUrl = Request.QueryString["ReturnURL"];
if (string.IsNullOrEmpty(returnUrl)){
   returnUrl = "~/";
}
Response.Redirect(returnUrl);
Response.Cookies.Add(new HttpCookie("returnUrl", Request.Url.PathAndQuery));
Response.Redirect("login.aspx");
HttpCookie returnCookie = Request.Cookies["returnUrl"];
if((returnCookie == null) || string.IsNullOrEmpty(returnCookie.Value))
{
    Response.Redirect("Default.aspx");
}
else
{
    HttpCookie deleteCookie = new HttpCookie("returnUrl");
    deleteCookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(deleteCookie);
    Response.Redirect(returnCookie.Value);
}
这个


注意:如果您有安全问题,您应该在返回URL上运行一些验证。

在每个页面中检查用户是否登录,如果没有,则检查

if (Session["UserName"] == null && Session["UserId"] == null) 
{
    string OriginalUrl = HttpContext.Current.Request.RawUrl; 
    string LoginPageUrl = "/login"; 
    HttpContext.Current.Response.Redirect(String.Format("{0}?ReturnUrl={1}", LoginPageUrl, OriginalUrl));
 }
在登录页面中,检查是否存在
returnurl
,如果
returnurl
存在,则重定向到该页面

if (this.Request.QueryString["ReturnUrl"] != null)
{
  this.Response.Redirect(Request.QueryString["ReturnUrl"].ToString());
}
else
{
  this.Response.Redirect("/account/default");
}

您的意思是
请求[“ReturnUrl”]
,它也是空的!是的,您使用的是表单身份验证否,我使用的是简单的Web表单和
响应。重定向
重定向到
登录.aspx
,如果会话是null@user1808827你应该用它。。。无论如何,你可以表现得像这样:读我的最新文章answer@user1808827Request.QueryString[“ReturnURL”]不是Request[“ReturnURL”]