这些用户名和密码来自哪里?如果您的网站已经实现了表单身份验证,那么您可以自行绕过设置凭据并使用表单身份验证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