![](/img/trans.png)
[英]Help me decide whether to use ASP.NET default membership/roles providers or write custom providers
[英]Where to locate custom membership, roles, profile providers in a 3-tier setup?
我有一個3層ASP.NET MVC 3項目,它有一個數據層,服務層,然后是一個表示層,它調用服務層來獲取數據。 我實際上在動作解決方案中使用了doFactory模式。
我想實現自定義成員資格,角色,配置文件提供程序,但我不確定在哪里放置它。 我想將它放在服務層,然后讓提供者調用DAO對象來獲取信息。
還有其他想法嗎?
你的想法很好。 雖然UI層與客戶端交互並獲取其密碼,但您的服務層應處理輸入系統的嘗試。
您的操作方法將信息傳遞給負責授權的服務對象。
您的服務層不知道它是否在Web應用程序中。
數據層只是存儲信息的地方,而不是存儲信息的位置。
您可以選擇在會話中將用戶的ID保留在UI層中。 登錄時,服務層將采用用戶名/密碼/其他並返回UserID。 或者,您的操作方法每次都可以將會話密鑰傳遞到服務層,以獲取用戶信息。
由於評論而編輯 :我在我當前的項目中做了這個(幾百萬美元的范圍)。 我在行動方法中做出了安全決定 。 (當然,用於實現此簡單的工具是來自服務層的對象。)例如,如果當前用戶沒有此角色或該角色,則將其重定向到拒絕頁面,否則,執行此操作。 MyServiceLayerObject.DoThing()
里面沒有安全性。
這是我的應用程序和許多其他人最簡單的方法。 (“最簡單”意味着它將被搞砸了。當涉及到安全性時,簡單就是好!)由於Action方法是功能的網關,因此在服務層中具有安全性只會導致額外的工作並且實際上模糊不清發生了什么安全問題。 現在,這是我的應用程序,通常有一個地方發生每個動作。
您的應用可能不同。 更多不同的操作方法和(特別是)不同的組件正在使用您的服務層功能,您希望使用授權方案鎖定服務層功能的次數越多。 許多人認為安全應該始終在服務層中,並且UI層中的任何其他安全操作都將是獎勵冗余。 我不同意。
以下是我在尋找同樣事物時發現的三層世界中的成員提供商的現有實現......
http://elysianonline.com/programming/wcf-wrapper-for-asp-net-membership/
和這里 ...
http://elysianonline.com/programming/using-the-wcf-membership-provider/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.