簡體   English   中英

在我的Web應用程序中對用戶配置文件采取的最佳方法是什么?

[英]What is the best approach to take for user profiles in my web application?

我目前正在構建一個ASP.NET MVC Web應用程序。 我的站點安全性(當前)構建在System.Web.Security Membership模型的擴展之上,在該模型中,我進行了擴展:

  • AuthorizeAttribute
  • 會員提供者
  • 角色提供者

這足以滿足安全機制的要求-盡管它使我可能可以做得更簡單的許多事情變得復雜。 但是,它已經完成了,這是一次非常有用的學習體驗。 盡管稍后,我仍然可以將其全部刪除,並使用更適合該站點的模型來代替它-我想將所有用戶配置文件信息保留在為該站點專門建立索引和構建的單個表中。

現在,我着手開發用戶個人資料。 與基本的用戶登錄系統相比,我需要存儲更多的用戶信息。 我已經檢查了ProfileProvider,似乎它是完全不同的蠕蟲病毒。 我喜歡它足夠靈活,可以直接從web.config配置用戶配置文件,而不必重建我的對象,而ProfileProvider處理其余的事情。 令我感到恐懼的是PITA,它導致在數據庫上運行查詢或報告。 這個事實可能使我對ProfileProvider的判斷蒙上陰影。 ProfileProvider甚至是用於此的正確模型嗎?

我應該走與定制現有系統還是定制構建自己的系統相同的道路?

一方面,它不支持ProfileProvider的自定義,這可能是一種有用的學習體驗,但另一方面,我可以看到,它迅速成為報告和查詢的噩夢。 但是我自己編寫代碼將使查詢/報告變得非常簡單,但是我不會學到太多。

如果有人對ProfileProvider模型的使用或自定義有任何經驗(如果確實是我應該使用的),並且可以將我引向有用的閱讀材料的方向,或者可以將我引向更有用的方向,我將不勝感激它。

提前致謝。

我使用數據庫中的表來實現安全性。 基於表的方法易於實現,易於理解,並且只需將表連接到要修剪的項目表即可進行安全修剪。 報告非常簡單,基於表的安全性也可以用於角色。

我只是發現ASP.NET MVC中的現有安全模型很麻煩,並且沒有執行我需要做的某些事情。 特別是,很難將屬性應用於需要從數據庫訪問ID的文檔記錄之類的東西,因為您最終將記錄查找了兩次。 一次在屬性類中,一次在控制器方法的存儲庫中。

在其他所有條件都相同的情況下,我寧願維護一個安全系統而不是維護兩個。 因此,我使用內置的安全性對用戶進行身份驗證,但是之后我切換到基於表的安全性。

我在一些書籍和許多博客中讀到,要走的路是根據Microsoft提供的基類實現自己的MembershipProvider,RoleProvider和ProfileProvider,這就是我所做的。 但是最后,我最終將所有代碼更改為自己的基於自定義的安全模式,這為我提供了所需的所有靈活性。

問題是這些提供者做出了很多可能不適合您系統的假設。 例如,MembershipProvider的create方法需要以問題和答案作為參數(我不需要),或者如果您需要其他屬性,則它開始變得麻煩編碼和維護。而且,我們不要談論對其進行測試...

就像您說的那樣,學習經驗總是很好的,但是我為滿足自己的需求而必須維護的代碼量卻不值得。

至於AuthorizeAttributte,我所做的是創建了適合自己的安全模式的過濾器。

我的建議? 如果您的要求符合Microsoft認為ProfileProvider的外觀,請繼續使用。 如果沒有,建立自己的。 您可以復制它們執行的一些實踐,但是它使您可以自由更改,無論何時何地。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM