2010-09-13 62 views

回答

8

如果您想要自定义成员资格提供程序,则只需创建一个继承MembershipProvider抽象类的类。然后,您将需要实现抽象方法,如ValidateUser,UpdateUser,GetUser等。您可以在实现自定义成员资格提供程序方法时使用EntityFramework。

以下文档使用odbc实现自定义成员资格提供程序。你可以使用你的EntityModel而不是odbc。

http://msdn.microsoft.com/en-us/library/44w5aswa.aspx

http://msdn.microsoft.com/en-us/library/6tc47t75.aspx

+8

问题中没有提到定制提供程序实现。我经常看到有人在他们真正了解问题领域之前暗暗暗示实施定制提供商堆栈。 -1 – 2010-09-23 04:05:55

+1

但这个问题甚至没有意义,这是一个很好的普遍答案。 – fabspro 2012-07-13 10:37:05

6

不,SqlMembership,以及在Sql堆栈的其他供应商,使用存储过程直接调用。

你可以,如果你愿意,建立在你的aspnet_db数据库之上的EF概念模型,如果你想检查或与之交互。

但让我强烈建议你应该把它看作只读,除非你知道它到底是什么,你要更新或删除。

10

Upvoted on Musa's answer to remove the negative。没有提到定制会员供应商,但这并不意味着它不是答案。

他对正确的点,还有附带的框架没有具体EF4提供商,但你可以建立自己的。

这实际上巩固了问题域,因为你可以清晰地将用户链接到你的实体对象,而不是治疗成员身份,你必须给小费脚趾周围一个单独的黑盒子的其余部分。

做到这一点确实是从的MembershipProvider继承和实现抽象方法的方法。

一旦你这样做了,你可以对用户等做任何你想做的事情,而不用担心会破坏你默认获得的SQLMembership表和存储过程 - 我不喜欢使用它们,因为它们很丑。

我刚刚完成了这个,使用我自己的EF4模型,以及我自己的用户实现等。我使用这个视频附带的示例代码 - http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider。顺便说一句,如果您使用该示例代码,请注意存储过程名称中的几个拼写错误!

+0

感谢您的评论! – GibboK 2010-11-20 18:51:39

+0

是否有类似C#的教程?谢谢! – mishap 2012-01-01 19:37:10

+0

@Chuchelo有下载C#代码选项,但没有视频。用C#提供的视频并不难。 – GerManson 2012-01-10 20:24:23