2013-09-16 91 views
1

我正在使用jQuery AJAX和webmethods。由於常規會話身份驗證不能在webmethod中工作,所以可能的方法是保護webmethods,以便用戶不會從客戶端調試工具複製該URL並使用它。保護Webmethods

+2

身份驗證和授權不適用於Web方法?你確定?你試過什麼機制沒有用? – David

+0

除了像David提到的那樣「認可」的認證和授權外,您應該縮小您的javascript。 –

回答

3

您可以在您的webmethods中使用會話。只需將(true)添加到WebMethod屬性中即可。

[WebMethod(true)] 
public string MyMethod 

如果你使用一些內置的身份驗證,你還可以使用:

[Authorize(Roles = "RoleName")] 
+2

我想你忘了''EnableSession'屬性的一部分,就像這樣:'[WebMethod(EnableSession = true)]''。 –

+0

爲什麼[Authorize]在我的代碼中不可用?我是否缺少「使用」聲明? – NickG

+0

您很可能缺少使用說明。當你遇到這樣的問題時,在VS2013中(我想也是這樣),你可以右鍵點擊它,你可能有「Resolve>」選項,它會自動向你顯示正確的庫。或者,您可以轉到查看> ObjectBrowser並搜索它。它應該是System.Web.Mvc或System.Web.Http,但知道如何跟蹤這些內容是非常有用的。 – McGaz

1

如果您的WebMethod不會在同一個盒子居住作爲您的應用程序的其餘部分,你可以也傳遞某種醃製和散列時間戳或其他信息作爲調用中的參數之一。

webmethod內部的邏輯可以解碼哈希,並將其與當前登錄的用戶和IP列表匹配和/或讀取到期日期,以便在其他地方複製並調用該URL時無用。

如果WebMethods雖然都是同一個應用程序的一部分,但取決於會話將是你最好的選擇。