簡體   English   中英

從EF中的MembershipUser類繼承

[英]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.

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