继承自EF中的MembershipUser类

时间:2011-01-25 11:52:04

标签: c# oop entity-framework-4

我在项目中使用内置的.net身份验证,并在实体框架4.0中创建类实体。

我的课程是学生,大学和公司课程。我的问题是我可以继承这些类的System.Web.Security.MembershipUser类吗? ef类已经继承了EntityObject类,所以我不知道该怎么做?

感谢

2 个答案:

答案 0 :(得分:0)

你的问题有点缺乏细节,但我还是回答。

首先,您不希望继承MembershipUser类。您可以(因为它的摘要)但是如果您要使用自己的逻辑和数据库表来存储验证字段,那么您只能继承它。

您不会将会员资格放入大学或公司课程,而是放在这些实体的成员身上,例如a学生是大学的成员,因为公司有员工。

学生或员工都没有会员资料(在他们的数据库表中),但更可能有与他们直接相关的信息(例如,员工有工资单号)

学生和员工都属于Person(例如他们都有姓名,地址等)

学生或员工可能是您的应用程序的用户(网站,桌面等),但他们可能也不是,或者他们可能会被停用为用户但您想保留他们的人员和学生/员工信息为了你的记录。

用户将拥有通常的信息,例如... UserId,用户名和密码等,但如果您要在应用程序上放置DisplayName,则不希望使用此实体。出于安全原因,我也没有将Session信息放到User上,而是使用UserId(加密的MD5单向加密)和SessionId来验证我的用户Session,这意味着如果我的某些操作有违反安全性(SQL注入)黑客将无法访问用户名和密码详细信息。无论如何,我离题了。

那么,MembershipUser类是什么?它主要用于你的Authentication对象,它有像... Login,ChangePassword,Logout等方法。这些方法会调用

if(!Membership.ValidateUser('username','password'))返回false;等

如果您想使用自己的db表和entityframework调用成员资格,那么您将寻求实现自定义成员资格提供程序,覆盖所有标准方法并为您提供实体DAO请求(希望使用设计模式,例如存储库等) 。这可能是冒险和困难的,但经验并不算太大。

否则,只需坚持使用标准的会员(用户)提供程序,在web.config文件中坚持所需,并让它处理安全性,您就可以继续开发应用程序......

一本好书是Pro Asp.Net MVC框架......它经历了包括单元测试,设计模式等在内的一切。另外一个花钱的好方法是GOF(Gang of Four)设计模式源码代码...获得全部作品,最好花费60英镑。

我希望这会有所帮助。

答案 1 :(得分:0)

没有EF提供商,但您可以编写自己的提供商。 为您的MembershipUser派生类编写一个mapper类。 我在这里找到了一个很好的例子: efmembership.codeplex.com

相关问题