我創建了幾個POCO,然後創建了一個DbContext(FooDbContext) - 然後我從DataService創建了一個DataService類設備FooDbContext> calll FooDatService。我可以訪問我的Silverlight應用程序中的所有數據,如果我啓動了Web瀏覽器,則可以按照預期通過URL訪問它。現在我只想在成功登錄後允許DataService。如何爲EF 5.0代碼添加安全性首先創建一個WCF DataService
1
A
回答
0
我以前
http://netpl.blogspot.com/2010/04/aspnet-forms-authentication-sharing-for.html
在博客上,像3年的想法是重用的形式cookie來保護您的調用,因此只有在用戶登錄被允許調用該服務。
0
您可以將服務授權管理器添加到WCF服務,以將該服務的所有方法和端點置於訪問控制之下,而無需修改任何服務實現。
創建和啓動WCF服務:
Uri[] restUris = new Uri[] { new Uri(baseUri, "Api/v1/") };
// substitute your service host type here. I'm using WCF OData DataServiceHost
restAPIServiceHost = new DataServiceHost(typeof(API.RestAPIService), restUris);
var saz = restAPIServiceHost.Description.Behaviors.Find<ServiceAuthorizationBehavior>();
if (saz == null)
{
saz = new ServiceAuthorizationBehavior();
restAPIServiceHost.Description.Behaviors.Add(saz);
}
saz.ServiceAuthorizationManager = new MyServiceAuthorizationManager();
restAPIServiceHost.Open();
以上也可以通過web.config中的魔法來完成。
在你MyServiceAuthorizationManager實現:
public class MyServiceAuthorizationManager: System.ServiceModel.ServiceAuthorizationManager
{
public override bool CheckAccess(OperationContext operationContext, ref Message message)
{
var reqProp = message.Properties[HttpRequestMessageProperty.Name] as HttpRequestMessageProperty;
var authHeader = new AuthorizationHeader(reqProp.Headers[HttpRequestHeader.Authorization]);
bool authorized = // your code to decide if caller is authorized;
if (!authorized)
{
var webContext = new WebOperationContext(operationContext);
webContext.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized;
// optional: give caller hints where to go to login
webContext.OutgoingResponse.Headers.Add(HttpResponseHeader.WwwAuthenticate, String.Format("Bearer realm=\"{0}\"", baseUri.AbsoluteUri));
}
return authorized;
}
}
這CheckAccess
方法將被調用通過WCF服務收到的每一個請求,該請求被分派到WCF實現方法之前。
相關問題
- 1. EF代碼首先附加並創建代理
- 2. 一個在EF代碼首先
- 3. 如何創建/更新EF代碼中的LastModified字段首先
- 4. 如何在EF代碼中的模型中爲列添加唯一鍵首先
- 5. 首先在EF代碼中爲擴展模型類創建一個類
- 6. EF代碼首先,使用代理創建新對象集合
- 7. EF代碼首先一對多
- 8. EF 5.0代碼第一導航屬性
- 9. C#EF代碼 - 首先創建SQL視圖查詢
- 10. EF 4.1代碼首先添加到外鍵集合
- 11. EF 4.1代碼 - 首先在表格中添加觸發器
- 12. 無法在asp.net MVC3 EF代碼中首先添加控制器
- 13. 與EF 4.1代碼首先我怎樣才能創建一個空的列
- 14. 創建新表EF編碼的困惑 - 首先一對多
- 15. 添加遷移在代碼遷移/代碼中首先創建空遷移
- 16. EF4代碼優先:如何添加關係不添加使用代碼首先導航屬性
- 17. 如何首先使用EF代碼向aspnet用戶添加外鍵?
- 18. 首先插入多行的EF代碼
- 19. Ef中的代碼首先映射
- 20. 異常在EF使用代碼首先
- 21. 首先在EF代碼中枚舉
- 22. EF代碼首先不產生表
- 23. EF代碼首先到SQL Server的Mysql
- 24. 組合鍵在EF 4.2代碼首先
- 25. 代碼首先遷移創建另外的屬性
- 26. EF代碼首先不是一個外鍵設置爲一個關係
- 27. 幫助到:將一個SQL命令來EF 4.1代碼首先
- 28. 如何更新模型EF代碼第一「從數據庫代碼首先」
- 29. 如何在EF代碼中不加載導航的情況下首先添加導航屬性項?
- 30. EF 4代碼首先:定義導航屬性
您是否使用WCF或MVC作爲您的數據服務的主機? – Kane 2013-03-23 07:23:59
我猜WCF,因爲我沒有使用MVC。 – 2013-03-23 07:30:08