繁体   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