2009-12-11 94 views
0

我正在使用jquery從我的網站訪問一個asp.net web服務。此Web服務需要獲取訪問它的用戶的用戶ID,並且用戶使用我的網站上的asp.net身份驗證登錄。jquery與asp.net和身份驗證

在asp.net中,我只需編寫「User.Identity.Name」來獲取用戶標識,現在我需要找到一種在客戶端獲取這個標識的方法,那可能如何?

我對訪問Web服務代碼:

$.ajax({ 
    type: "GET", 
    url: "http://domain.com/Service.svc/search?keyword=" + this.value + "&userid=" + HERE I NEED THE USERID, 
    dataType: "json" 
    ..... 
}); 

一種方式是把用戶ID在一個隱藏字段或東西和獲得這樣的說法,算得上是要走的路?

回答

3

假設這一切都在可信任的內部網絡(例如公司?)上,那麼jQuery調用將以與它的網站相同的方式向web服務提供用戶的證書。 Web服務能否檢查通過身份驗證的用戶(例如,使用User.Identity.Name)?

這種方法遠比在查詢字符串上提供用戶名(或作爲Web服務調用的參數)更爲可取,因爲這兩種方法中的任何一種都很容易被顛覆。

+0

啊哈,所以如果網絡服務在同一個域(它是),我可以只獲得Web服務上的用戶ID? :)從來沒有想過那.. – Martin 2009-12-11 14:13:09

1
$.ajax({ 
    type: "GET", 
    url: "http://domain.com/Service.svc/search?keyword=" 
      + this.value + "&userid=<%= User.Identity.Name %>", 
    dataType: "json" 
    ..... 
}); 

會這樣做,但你確定你需要嗎?如果這不是跨域調用,請求應該來自經過身份驗證的用戶會話,因此在您的服務中,您可以在後面的代碼中提取該信息。

由於Rob points out,這可以很容易地由某人修改,所以你可能實際上想要使用別的東西,例如使用你知道在兩端的鹽和密鑰加密用戶名。