我試圖通過Silverlight驗證對WCF DataServices服務的調用。實質上,當用戶登錄時,他們會得到一個特殊的散列,該散列應嵌入WCF DataServices的每個請求的標頭中。目前使用這個作爲通過QueryInterceptor方法檢查,例如對WCF DataServices進行身份驗證
[QueryInterceptor("Orders")]
public Expression<Func<Orders,bool>> OnQueryOrders()
{
string hash = WebOperationContext.Current.IncomingRequest.Headers.Get("MyHeader");
if(!TestHash(hash))
{
return o => false;
}
else
{
return o => true;
}
}
這似乎是最糟糕的方式來實現這一點。 WCF Dataservices中是否有任何鉤子在運行查詢之前可用於取消請求的運行?請記住,此服務是無狀態的,無法訪問會話。
YOu應該返回一個403(禁止)而不是404(Not Found) –
太棒了!爲什麼我們不能這樣做認證,而不是愚蠢的基本的cust授權。這樣更安全嗎?我可以加密消息或令牌並在服務器上驗證它。 – gideon