2015-04-28 31 views
1

我想在用戶登錄時獲取緯度和經度。我知道,我可以得到緯度和經度上的客戶端:ASP.NET-MVC中控制器端的經緯度5

@{ 
    ViewBag.Title = "Home Page"; 
} 
@section Scripts { 
    <script> 
     var x = document.getElementById("demo"); 
     function getLocation() { 
      if (navigator.geolocation) { 
       navigator.geolocation.getCurrentPosition(showPosition); 
      } else { 
       x.innerHTML = "Geolocation is not supported by this browser."; 
      } 
     } 
     function showPosition(position) { 
      x.innerHTML = "Latitude: " + position.coords.latitude + 
      "<br>Longitude: " + position.coords.longitude; 
     } 
     window.onload(getLocation()); 
    </script> 
} 

<div id="demo"></div> 

然後使它登錄表單的隱藏部分。然後通過提交表單提交到POST登錄控制器:

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { 

這是一個好主意嗎?地理定位可能很容易被僞造,而將它傳遞給控制器​​有沒有辦法通過C#在控制器端實現呢?

+0

一個人要僞裝會得到什麼?除非你根據地理位置阻止訪問 – DLeh

+0

@DLeh是的。 – Yoda

+0

基於經度/緯度?不是喜歡,他們所在的國家? – DLeh

回答

0

無法直接從服務器端獲取用戶的精確位置。地理位置數據旨在幫助您的網站根據他們發送給您的信息提供更好的用戶體驗。它不應該用於安全目的。

+0

這個討論可能也是相關的:http://security.stackexchange.com/questions/30080/is-it-possible-to-restrict-portions-of-a-web-site-to-only-allow-access-基於 – StriplingWarrior