【问题标题】:Possible to get return url back from javascript/jquery?可以从 javascript/jquery 获取返回 url 吗?
【发布时间】:2009-11-09 21:56:02
【问题描述】:

我有一个问题,当用户在我的网站上超时时,他们仍然登录。所以他们仍然可以执行 ajax 请求。如果他们在我的网站上执行 ajax 请求,我的 asp.net mvc 授权标签将停止此操作。

如果授权失败,授权通常会将用户重定向回登录页面。

现在,由于这是一个 ajax 请求,似乎正在发生的事情是将整个页面发送回以 html 呈现。所以用户永远不会被重定向,因为我只是把整个页面作为 html 发送给我。

然而萤火虫在控制台中这样说:

http://localhost:3668/Account/signIn?ReturnUrl="return"(这不在网络浏览器的实际网址栏中,所以我无法上去获取它。我似乎只能通过萤火虫看到它。)

所以我不确定,但如果我能以某种方式从我的 errorCallback 区域中获取这个 url,那就太好了。

由于我的测试没有发回错误代码(发送 200 OK)。相反,我只是得到解析错误(因此为什么调用 errorCallback),但我不能假设每次我得到解析错误都意味着用户超时。

我需要更好的东西。唯一的另一个选择是查看响应并寻找关键作品,看看它是否是我认为不太好的登录页面。

【问题讨论】:

    标签: c# .net jquery asp.net-mvc


    【解决方案1】:

    您可能想做以下两件事之一:

    • 编写服务器代码,以便 ajax 请求在会话过期时返回 ajax 错误。这样,javascript 将期望一个指示会话超时的返回代码,并且您可以告诉用户会话已过期。
    • 如果由于您的框架如何处理这些问题而没有提供优雅的解决方案,只需在您的登录页面中添加一段 HTML 注释,例如 Uth7mee3 或其他东西;然后检查 ajax 代码中是否存在该字符串。

    或者,您还可以在网页上设置一个计时器,以确定会话何时将超时,并警告用户通过一条小消息让他们更新会话。一旦超时,请清空页面并给他们一个链接以再次登录。

    【讨论】:

      【解决方案2】:

      在登录页面中有一个脚本怎么样

      if(document.location.href != "/Account/Login")
      {
      document.location.href = "/Account/Login"
      }
      

      如果您尝试在 ajax 请求中呈现部分内容,这将起作用。 (如果您期望 json,则不是)

      【讨论】:

        【解决方案3】:

        在这种情况下响应的状态码是什么?我想你应该可以在这里查看302。如果没有,Location 标头将是检查登录页面的下一个最佳方法。

        【讨论】:

        • 这就是我的 ErrorCallBack XMLHttpRequest readyState=4 status=200
        • 我想我之前看过 firebug 显示 302 消息,但我的 jquery/javascript 代码都没有发现任何 302 消息。
        • 使用XHR的getResponseHeader()函数获取“Location”标头。
        • 还有一个getAllResponseHeaders() 函数可用(仅供参考)
        • 我在 firebug 中也看到了 302,但我的 errorCall back 从未收到任何关于 302 的信息。
        【解决方案4】:

        这不是您特定问题的答案,但我处理此问题的方式是有一些 client-side code 了解会话长度并提示用户在会话准备好之前更新会话如果他们没有离开页面,则过期。如果用户没有及时响应提示,它会调用站点的注销操作——将用户带到登录页面。

        你可以在我的博客http://farm-fresh-code.blogspot.com找到更多关于具体实现的信息,包括一些代码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-02
          • 2018-04-28
          • 2014-07-08
          • 2012-09-14
          • 2017-04-01
          相关资源
          最近更新 更多