[英]Inheriting from the MembershipUser class in EF
我在項目中使用內置的.net身份驗證,並在實體框架4.0中創建類實體。
我的班級是學生班,大學班和公司班。 我的問題是我可以繼承這些類的System.Web.Security.MembershipUser類嗎? ef類已經繼承了EntityObject類,所以我不知道該怎么做?
謝謝
您的問題有點缺乏細節,但我可以回答。
首先,您將不想從MembershipUser類繼承。 您可以(因為它是抽象的),但是僅當您打算使用自己的邏輯和數據庫表來存儲驗證字段時,才可以從其繼承。
您不會將會員資格添加到大學或公司課程中,而是將其放在這些實體的成員上,例如,學生是大學的成員,因為公司有員工。
學生或雇員都不會在其db表中擁有會員信息,但更可能具有與他們直接相關的信息(例如,雇員具有薪水單號)
學生和雇員都是“人”類型的(例如,他們都有姓名,地址等)
學生或雇員可能是您應用程序的用戶(網站,桌面等),但后來卻並非如此,或者他們可能已被停用為用戶,但您想保留其個人和學生/雇員信息作為記錄。
用戶將具有通常的信息,例如...用戶名,用戶名和密碼等,但是如果要在應用程序上放置DisplayName,則不想使用該實體。 出於安全原因,我也不將Session信息放到User上,而是使用UserId(加密的MD5單向加密)和SessionId來驗證我的用戶Session,這意味着,如果我確實有一些違反安全性的行為(SQL注入)黑客將無法訪問用戶名和密碼詳細信息。 無論如何,我離題了。
那么,什么是MembershipUser類? 它主要在您的Authentication對象中使用,該對象將具有諸如Login,ChangePassword,Logout等方法。這些方法將調用
如果(!Membership.ValidateUser('username','password'))返回false; 等等
如果您想使用自己的數據庫表和entityframework調用成員資格,那么您將尋求實現自定義成員資格提供者,覆蓋所有標准方法,並向您提出實體DAO請求(希望使用設計模式,例如存儲庫等)。 這可能是冒險和困難的,但是經驗並不是很多。
否則,只需堅持使用標准成員資格(用戶)提供程序,將需要的內容保留在web.config文件中,並處理安全問題,就可以繼續開發應用程序了。
不錯的書是Pro Asp.Net MVC框架...它涵蓋了包括單元測試,設計模式等在內的所有內容。花錢的一種好方法是使用GOF(四人制)設計模式源代碼。 。獲得全部作品,有史以來最高支出60英鎊。
希望對您有所幫助。
休
沒有EF提供程序,但是您可以編寫自己的提供程序。 為MembershipUser派生類編寫一個映射器類。 我在這里找到了一個很好的例子: efmembership.codeplex.com
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.