【问题标题】:ReturnURL clearing querystringReturnURL 清除查询字符串
【发布时间】:2011-01-26 19:27:49
【问题描述】:

是否可以从服务器清除 ReturnUrl?我有一个用户注销的登录页面,我想将他们定向到特定页面,但是当设置 ReturnURL 时,它会覆盖我的重定向页面。

更新:

理想情况下,我只会重定向刚刚注销的用户而不是已添加书签的用户,或者在特殊情况下我都会重定向。

以下是这些情况:

  1. 链接或书签 -> 在大多数情况下应重定向到指定页面
  2. 具有 returnurl 的注销 -> 不应重定向到页面
  3. 特殊情况 -> 应始终重定向到我的特殊情况,即当用户需要查看重要内容时

有没有办法从注销/登录状态控件中删除returnurl?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    您必须稍微调整登录逻辑。我从http://digitalcolony.com/2007/05/override-returnurl-in-asp-net-security/ 偷了我的答案。

    覆盖登录逻辑并执行:

    if (FormsAuthentication.Authenticate(txtName.Text, txtPassword.Text))
    {
        FormsAuthentication.SetAuthCookie(txtName.Text, true);
        Response.Redirect("MySecuredStartPage.aspx", true);
    }
    

    【讨论】:

    • 我认为这是 ASP.NET 1.0 我有访问点来执行此操作。但是,这有点棘手,因为如果用户为页面添加书签,它应该返回到正确的页面。但是,如果用户注销,那么他们应该被重定向或在特殊情况下。嗯
    【解决方案2】:

    这是我的暂定解决方案:

    1. 我可以更改 LoginStatus 控件以重定向到登录。
    2. 在正常情况下,我可以允许页面重定向,即书签等。
    3. 对于特殊情况我可以 Response.Redirect

    【讨论】:

      【解决方案3】:

      这对我有帮助:

      protected void Page_Load(object sender, EventArgs e)
      {
          if (!Page.IsPostBack)
          {
              if (!string.IsNullOrEmpty(Request.QueryString["ReturnUrl"])) //check if ReturnUrl is not empty
              Response.Redirect("index.aspx"); //redirecting to the page I need
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-17
        • 2014-02-06
        • 2011-08-24
        • 1970-01-01
        相关资源
        最近更新 更多