在 aspx C#.NET 页面(我正在运行框架 v3.5)中,我需要知道用户来自哪里,因为他们无法在不登录的情况下查看页面。如果我有页面A
(用户想要查看的页面)重定向到页面B
(登录页面),Request.UrlReferrer 对象为 null。
背景:如果用户未登录,我会重定向到登录页面(B
在这种情况下)。登录后,我想将他们返回到他们被迫登录之前所请求的页面。
UPDATE:
一个不错的快速解决方案似乎是:
//if user not logged in
Response.Redirect("..MyLoginPage.aspx?returnUrl=" + Request.ServerVariables["SCRIPT_NAME"]);
然后,只需查看您强制他们执行的登录页面上的 QueryString 并将用户放在成功登录后的位置即可。
UrlReferrer 基于HTTP_REFERER浏览器的标头should发送。但是,就像所有留给客户的事情一样,它是可变的。
我知道一些“安全”套件(如诺顿的互联网安全)会删除该标头,因为相信它有助于跟踪用户行为。另外,我确信有一些 Firefox 扩展可以做同样的事情。
最重要的是你不应该相信它。只需将 url 附加到 GET 字符串并根据该字符串进行重定向即可。
更新:正如评论中提到的,将 GET 参数的重定向限制为仅适用于无域相对链接、拒绝目录模式(../)等可能是一个好主意。因此,仍然要对重定向进行理智检查;如果您遵循标准“不要盲目使用任何用户提供的输入”规则,您应该是安全的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)