2013-04-16 146 views
0

我有我從jQuery的訪問一個頁面上的服務,它看起來像這樣:如何通過引用來限制對WCF服務的訪問?

[ServiceContract(Namespace = "")] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public class FacadeService 
{ 
    ServiceHelper serviceHelper = new ServiceHelper(); 

    [OperationContract] 
    [WebGet(ResponseFormat=WebMessageFormat.Json)] 
    public String GetAllProducts() 
    { 
     Uri uri = new Uri("http://localhost:12345/api/Products"); 

     return serviceHelper.SubmitGetRequestToService(uri); 
    } 
} 

這是偉大的,但任何人現在可以打開瀏覽器並打這個服務。我只想讓本地網站能夠訪問此服務。有沒有什麼內置的方法來做到這一點,或者我必須設計一些聰明的方案來阻止riff-raff?

回答

0

如果您在IIS上託管您的servin,最簡單的方法可能是限制通過IIS工具訪問服務URL。

如果你使用wcf服務本身,你可以添加你的ip過濾行爲,例如thisthis

但我仍然認爲通過標準的IIS工具可以更容易地完成它。

+0

我真的是第一個碰到這個問題的人嗎?我認爲,因爲WCF以這種方式設置專門用於AJAX調用,所以它會提供某種機制來確保非AJAX調用者不能直接連接到服務並開始吸取數據。在WCF服務中,你沒有來自調用者的「上下文」,所以我認爲會有一些WCF設置。我不能成爲世界上唯一一個穿越這第一人的人,對嗎?! :-) –

+0

我更新了答案 - 如果必須的話,你可以編寫和使用你的行爲。 – evgenyl

+0

再次感謝。我想我不是在尋找「一種」方式來做到這一點,我正在尋找這方面的最佳做法,以及如何解決這個問題。 –