這些用戶名和密碼來自哪裏?如果您的網站已經實現了表單身份驗證,那麼您可以自行繞過設置憑據並使用表單身份驗證Cookie。如果您的用戶已經登錄,那麼Cookie將隨着Web服務呼叫一起前往。爲了在另一邊閱讀它,你需要做一些改變。
首先你需要啓用WCF ASP.NET兼容模式在system.ServiceModel部分:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
一旦這樣做了,然後針對每個服務方法,你想了解ASP.NET餅乾添加[AspNetCompatibilityRequirements]屬性服務類
[ServiceContract]
[AspNetCompatibilityRequirements(
RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ExampleService
{
}
現在每個方法中,你可以訪問HttpContext.Current.User.Identity對象來發現用戶的身份。
如果你只希望某些方法來通過身份驗證的用戶被稱爲那麼你可以,如果你正在使用ASP.NET的角色提供那麼這些也將被填充使用這樣的PrincipalPermission
[OperationContract]
[PrincipalPermission(SecurityAction.Demand, Authenticated=true)]
public string Echo()
作爲獎勵和那麼你可以使用方法來的PrincipalPermission他們限制在一個特定的角色的成員:
[OperationContract]
[PrincipalPermission(SecurityAction.Demand, Role="Administators")]
public string NukeTheSiteFromOrbit()
而這也顯然是工作在Silverlight2。
看起來不錯;如果使用原始的httpwebrequest,你碰巧知道這個(或類似的)是否可用?我有一個自定義的RPC棧,我想以同樣的方式獲得保護(當然,如果這是一個非平凡的答案,我當然可以問一個新的queston) – 2009-07-18 09:00:12
它應該是的;見http://www.silverlightshow.net/items/Cookies-in-Silverlight-Web-Requests.aspx – blowdart 2009-07-18 09:22:49
Ta;我會看看; - – 2009-07-18 09:38:24