_layouts / Authenticate.aspx在Sharepoint 2010中重定向中丢失查询字符串参数

时间:2014-02-19 20:27:14

标签: c# asp.net sharepoint

当_layouts / Authenticate.aspx在用户身份验证后重定向到应用程序页面时,我们正在丢失查询字符串。

以下示例

http请求如下所示

/ _布局/ Authenticate.aspx?源= http://ourwebsite.com/somepage.aspx?paramapp=testapp&paramdata=testdata

重定向很好,但所有查询字符串都期望第一个被截断。

在上面的示例中,paramdata被截断

2 个答案:

答案 0 :(得分:2)

开箱即用的Authenticate.aspx我遇到了同样的问题。

这就是我们所做的。假设您的网址如下所示

... / SomePage.aspx页面参数1 =值1&安培;参数2 =值2&安培;参数3 =值3&安培; ....

  1. 创建了Param对象
    {             "参数1" :" value1",             "参数2" :" value2",             "参数3" :" value3",             ...
    }

  2. 创建参数的JSON字符串。您可以使用JSON.stringify()函数。对此进行编码并发送参数

  3. JSON.stringify({                 "参数1" :" value1",                 "参数2" :" value2",                 "参数3" :" value3" })

    字符串:" {" Param1":" value1"," Param2":" value2&# 34;,"参数3":"值3"}"

    编码字符串:%22%7B%22Param1%22%3A%22value1%22%2C%22Param2%22%3A%22value2%22%2C%22Param3%22%3A%22value3% 22%7D%22

    1. 将此作为Param传递到目标页面 ... / SomePage.aspx页面?帕拉姆=%22%7B%22Param1%22%3A%22value1%22%2C%22Param2%22%3A%22value2%22%2C%22Param3%22%3A%22value3%22%7D %22
    2. 这应该通过Authenticate.aspx,您将能够检索参数。在页面加载时,您可以处理对象并获取各个参数值​​。

      希望这有帮助。

答案 1 :(得分:0)

我没有机会确认这一点,但我一直看到在放入URL时HTML编码的源信息。也许这将是一个很好的起点。如果这不起作用,请发布您正在使用的代码,以便我们了解您是如何做到的。

在相关说明中,您要在源中包含完整地址,您不应该这样做,因为它会打开您的用户以重定向攻击。 Troy Hunt here提供了对此问题以及解决方法的详细解释。