是否可以将其他自定义用户数据传递给自定义ASP.NET成员身份提供程序

本文关键字:自定义 成员 NET ASP 身份 程序 其他 用户 数据 用户数 是否 | 更新日期: 2023-09-27 18:19:47

我正在实现我的自定义Membership提供程序,我需要实现一些额外的字段(如名字、姓氏、国家/地区等)。

我知道当我从提供者返回一个用户对象时,我可以扩展MembershipUser类并强制转换为它。当我在用户注册期间创建新用户Membership.CreateUser(...)时,我找不到如何以及是否可以这样做的事情是如何将这些自定义属性实际传递给我的提供者。

有可能吗?如果是,如何做到这一点?

感谢

更新

MSDN文章称

但是,Membership类或依赖Membership类的控件,例如CreateUserWizard控件。为了从应用程序调用此方法,强制转换Membership引用的MembershipProvider实例类作为您的自定义成员资格提供程序类型,然后调用直接创建用户重载。

在这种情况下,Membership是对类实例的引用,同时它本身也是一个类。

两个

((CustomMembershipProvider)Membership).CreateUser(...);

也不是

(CustomMembershipProvider)Membership.CreateUser(...);

工作。

在这种情况下,我应该如何判断?

更新:看看我的答案。

是否可以将其他自定义用户数据传递给自定义ASP.NET成员身份提供程序

我发现了如何进行正确的铸造,所以它是:

自定义会员提供商:

public sealed class CustomMembershipProvider : MembershipProvider {...}

自定义会员用户:

public class CustomMembershipUser : MembershipUser {...}

创建新的自定义用户:

CustomMembershipProvider myProvider = (CustomMembershipProvider)Membership.Provider;
CustomMembershipUser user = (CustomMembershipUser)myProvider.CreateUser(...);

获取自定义用户:

CustomMembershipProvider myProvider = CustomMembershipProvider)Membership.Provider;
CustomMembershipUser user = (CustomMembershipUser)myProvider.GetUser(...);

本文展示了如何实现自定义用户:http://msdn.microsoft.com/en-us/library/ms366730.aspx

您可以向用户添加额外的Profile数据,而不是扩展MembershipUser

例如,以下内容可以添加到您的配置文件中。

<profile>
    <properties>
        <add name="FirstName"/>
        <add name="LastName"/>
        <add name="Address"/>
        <add name="City"/>
        <add name="State"/>
        <add name="Zip"/>
    <properties>
<profile>

这将允许ASP.NET创建一个ProfileCommon类,该类将包括您在配置文件中指定的所有属性。

这是Profile属性的文档。