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

时间:2012-01-09 18:26:19

标签: c# asp.net asp.net-membership

我正在实现我的自定义成员资格提供程序,我需要实现一些其他字段(例如名字,姓氏,国家/地区等)。

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

有可能吗?如果是的话,怎么做?

由于

更新

MSDN article

  

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

在这种情况下,

Membership是对类实例的引用,同时它本身就是一个类。

都不是

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

,也不

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

作品。

在这种情况下我应该如何施展它?

更新:看我的回答。

3 个答案:

答案 0 :(得分:3)

我想出了如何正确施法,所以这里是:

自定义会员提供商:

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

答案 1 :(得分:2)

您可以向用户添加其他个人资料数据,而不是扩展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类,它将包含您在配置文件中指定的所有属性。

Here is the documentation用于Profile属性。

答案 2 :(得分:-1)

您可以通过实施Profiles添加“基本”用户信息。有安全性,格式化等问题需要考虑,但这是一个简单的解决方案。或者你可以implement a custom Membership provider.

相关问题