首页>Program>source

在aspx C#.NET页面(我正在运行Framework v3.5)中,我需要知道用户来自何处,因为他们无法登录而无法查看页面。如果我有 A页面 (用户要查看的页面)重定向到页面 B (登录页面),Request.UrlReferrer对象为null.

背景:如果用户未登录,我将重定向到"登录"页面( B 在这种情况下).登录后,我想将他们返回到他们被迫登录之前所请求的页面。

UPDATE:
一个不错的快速解决方案似乎是:
//if user not logged in Response.Redirect("..MyLoginPage.aspx?returnUrl=" + Request.ServerVariables["SCRIPT_NAME"]);
然后,只需在登录页面上查看QueryString即可,迫使他们进入,并在成功登录后将用户放置在他们所在的位置。

最新回答
  • 2021-1-11
    1 #

    如果使用标准成员资格提供程序,并为 目录/页面,代码将自动设置ReturnUrl的查询参数,并在成功登录后重定向。

    如果您不想使用Membership provider模式,建议您也手动执行查询字符串参数. HTTP引荐来源网址不是很可靠。

  • 2021-1-11
    2 #

    UrlReferrer基于浏览器应该发送的HTTP_REFERER标头.但是,就像所有留给客户的事情一样,它是可变的。

    我知道某些"安全"套件(如Norton的Internet Security)会删除该标头,因为它有助于跟踪用户行为.另外,我确定有一些Firefox扩展程序可以执行相同的操作。

    最重要的是,您不应该信任它.只需将URL附加到GET字符串,然后基于该字符串进行重定向。

    更新:如评论中所述,将从GET参数的重定向限制为仅适用于无域相对链接,拒绝目录模式(../)等可能是一个好主意。因此,仍然进行完整性检查 重定向; 如果您遵循"不要盲目使用任何用户提供的输入"标准,那么您应该是安全的。

  • 2021-1-11
    3 #

    问题可能与如何将用户重定向到其他页面有关.无论如何,引荐来源网址不是您应遵循的绝对规则-客户端可以轻松地对其进行伪造。

  • 2021-1-11
    4 #

    您要查找的内容最好是使用查询字符串变量(例如returnURL或originURL)来完成. Referrer非常不可靠,因此最适合用于数据挖掘操​​作。

    例如,请参见ASP.Net通过登录进行重定向的方式。

  • Python比较运算符从左到右链接/分组?
  • java:GwT:计时器和计划程序类