試圖找出獲取用戶來自MVC3的網頁的最佳方式。MVC3,請求來自哪裏
我正在構建一個下載文件函數,如果用戶沒有鏈接到我自己的網站上的文件,我想將它們重定向到我選擇的頁面。
我基本上想阻止人們直接鏈接到我的文件,而無需先通過我的網站。
我該如何以最可靠的方式做到這一點?
試圖找出獲取用戶來自MVC3的網頁的最佳方式。MVC3,請求來自哪裏
我正在構建一個下載文件函數,如果用戶沒有鏈接到我自己的網站上的文件,我想將它們重定向到我選擇的頁面。
我基本上想阻止人們直接鏈接到我的文件,而無需先通過我的網站。
我該如何以最可靠的方式做到這一點?
超級簡單的方法(將工作最的時間),將在你的控制器中看看Request.UrlReferrer
。這應該包含訪問者來自的URL。
MVC3仍以ASP.NET爲基礎。所以,你可以使用所有的ASP.NET過的功能...
另一種方法是使用IIS的擴展=>https://www.iis.net/community/default.aspx?tabid=34&g=6&i=1288(微軟LeechGuard)
這就是我現在已經解決的問題。 如果文件的請求進入頁面顯示有關文件的信息。要下載文件,用戶單擊指向同一頁面的鏈接。
當代碼檢測到用戶正在從文件自己的URL請求文件時,該文件將被提供給用戶。
private bool RequestIsCommingFromSamePage()
{
if (Request.UrlReferrer == null)
return false;
string requestURL = Request.UrlReferrer.ToString();
string pageURL = Request.ServerVariables["HTTP_HOST"] + Request.RawUrl;
requestURL = requestURL.Replace("http://", "").Replace("https://", "");
if (requestURL == pageURL || pageURL == null || requestURL == null)
return true;
return false;
}
是否要用戶在登錄後才能訪問文件? – VJAI 2012-07-20 09:22:32
不,用戶永遠不會登錄。我只想確保他們從我的網站上的鏈接獲得文件。如果鏈接到文件的鏈接來自鏈接到我的文件的外部網站,我想將它們重定向到另一個頁面。 – JensB 2012-07-20 11:04:41