实现自定义成员资格提供程序成员资格

时间:2010-04-27 19:30:31

标签: asp.net asp.net-membership

我正在尝试实现自定义成员资格提供程序,并希望更改GetUser方法。问题是GetUser返回MembershipUser,我想返回MyMembershipUser,它有两个额外的属性FirstName和LastName。我可以在我的会员提供者中创建一个新方法,返回MyMembershipUser,但我认为这没有任何意义。

我该怎么做呢?

3 个答案:

答案 0 :(得分:4)

这会破坏Membership类的目的。如果您需要访问其他属性,请执行以下操作:

var user = Membership.GetUser(userName, true) as MyMembershipUser;

你真的应该有一个单独的Profile类来处理MembershipUser未提供的内容。

var profile = Profile.GetProfile(Membership.GetUser(userName, true));

答案 1 :(得分:2)

你应该去Profile Provider。 检查这个link,您有SqlStoredProcedureProfileProvider和SqlTableProfileProvider,这样您就可以在数据库中“清除”存储配置文件数据,让您随时查询数据库。

您可以在存储过程中实现所需的任何业务逻辑,以将Profile数据映射到您自己的数据库模式和数据库逻辑。

答案 2 :(得分:0)

如果MembershipUser是MyMembershipUser的基类,那么您可以返回MyMembershipUser的实例,即使GetUser()的返回类型是MembershipUser,然后,如有必要,将它们转发回MyMembershipUser(但您真的需要这样做吗? )

BTW,这是多态性的一个例子。