仅当ReturnUrl参数在查询字符串

时间:2015-04-30 16:39:15

标签: asp.net asp.net-mvc asp.net-mvc-3 routing

在MVC应用程序中,我们使用名为ReturnUrl的查询字符串参数来跟踪用户来自何处,以及他们在完成当前页面/视图后返回的位置。此外,当会话超时(例如)时会使用相同的参数,并将它们发送到登录页面,其中ReturnUrl参数现在包含它们刚刚打开的页面。

只要他们来自的网址不包含ReturnUrl参数,就会正确处理登录重定向。但如果确实如此,那么它们就会显示出来自IIS的硬盘。

示例1:

  1. 用户在http://example.com/Account/Edit
  2. 会话超时,然后用户点击刷新。
  3. 将用户带到登录页面,并正确设置查询字符串参数ReturnUrl不可
  4. 示例2:

    1. 用户在http://example.com/Account/Edit?ReturnUrl=%2FSomething%2FElse%2F4
    2. 会话超时,然后用户点击刷新。
    3. 用户立即显示IIS'401错误页面,而不是发送回登录页面。的 BAD
    4. 请注意,请求 使其成为MVC处理程序:

      WHY ME?!

      我尽可能地调试了,但问题似乎发生在MVC框架本身。如果我将ReturnUrl参数更改为其他内容,例如ReturnUrl2,那么登录重定向就可以正常工作。

      ReturnUrl这个词有什么特别之处?

0 个答案:

没有答案