【问题标题】:How do I identify a user returning to my ASP.NET MVC site from elsewhere?如何识别从其他地方返回到我的 ASP.NET MVC 站点的用户?
【发布时间】:2014-11-19 19:13:46
【问题描述】:

如何确定用户是否从其他地方(即从新标签或其他网站)访问我的网站?我需要向仍然登录的返回用户显示“欢迎回来”消息,但如果他们只是在我的网站中导航,或者说,重新加载主页,我不希望它出现。

我考虑过使用Onload/Onbeforeunload(或类似的)来跟踪当前是否有打开的视图,但这只会增加复杂性。

我可以假设如果Request.UrlReferrer 不包含我的域,那么这是一次“新”访问吗?

【问题讨论】:

  • 你不能总是依赖Request.UrlReferrer,因为它很容易被禁用,一些浏览器甚至不发送它。如果用户通过书签返回您的网站,它也不会被设置。
  • 引荐来源网址是来自浏览器的有关用户最后访问页面的唯一信息。但这只是用户浏览器提供的内容(即您不能告诉浏览器“向我发送正确的推荐人”,例如参见addons.mozilla.org/en-US/firefox/addon/refcontrol)。但是,鉴于大多数用户的大部分时间,引荐来源网址将包含当前选项卡访问的最后一页。不要忘记在常用浏览器中验证“在新标签/窗口中打开链接”和“重复标签”情况)。
  • @DGibbs 如何禁用Request.UrlReferrer?当我从另一个站点/新标签/书签到达时,Chrome、FF 和 IE 都提供了一个 null Request.UrlReferrer,但是当我在我的站点中浏览时(包括“在新标签/窗口中打开链接”),它包含以前的 URL。这是否意味着假设 null Request.UrlReferrer 构成外部访问是安全的选择,或者即使在我自己的网站中浏览时也可以禁用它?

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


【解决方案1】:

试试这个,

if(Request.UrlReferrer != null && Request.UrlReferrer.Host != Request.Url.Host)
{
    // User visit your page from another site/domain
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 2020-04-12
    • 2015-11-02
    相关资源
    最近更新 更多