ASP.net会员添加自定义列

时间:2010-09-29 15:20:46

标签: asp.net database asp.net-membership

在我的母版页中,我有:

MembershipUser thisUser = Membership.GetUser();
loggedInUserID = thisUser.ProviderUserKey.ToString();

thisUser可让我访问aspnet_Membership中的所有字段。

我希望每个用户都有一个新字段isSubscribed。我可以使用SQL查询来获取值,但我想知道是否有某种方法来修改成员用户对象,以便它也检索此值,因此可以从以下位置访问:

thisUser.isSubscribed.ToString();

感谢您的帮助!

4 个答案:

答案 0 :(得分:5)

您需要将该字段添加到配置文件提供程序

可在此处找到配置文件提供程序的说明。

http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx

这是摘自文章的摘录

“ASP.NET配置文件功能将信息与单个用户相关联,并以持久格式存储信息。配置文件允许您管理用户信息,而无需您创建和维护自己的数据库。此外,ASP.NET个人资料功能使用强类型API提供用户信息,您可以从应用程序的任何位置访问该信息。“

答案 1 :(得分:1)

会员资格用于身份识别和身份验证。为了元属性而破解你的安全性并不是一种好的做法。

如前所述,Profile是存储元数据的合适位置,这样就不需要自定义MembershipUser。

如果需要sql查询访问数据,请使用SqlTableProvider

答案 2 :(得分:0)

Si Robinson为用户存储其他元数据提供了一个很好的答案,而无需更改底层架构,但如果已经在自定义数据库架构中存储了有关此用户的数据,则不会很好的工作。

我使用的解决方案是实现我自己的会员提供者:

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

然后你可以实现自己的MembershipUser,它暴露了IsSubscribed属性。

这适用于ASP.NET中的Membership过程,例如登录组件。您需要做的就是将GetUser()返回的对象强制转换为自定义实现,然后进行设置!

答案 3 :(得分:0)

您可以为此使用角色并将用户分配给订阅者角色。如:

Roles.AddUserToRole("Bob", "Subscriber");

您将通过个人资料字段查询真正无趣的时间。通过角色,您可以使用以下内容枚举用户:

Roles.GetUsersInRoles("Subscriber");

您将能够将这些角色添加到Web.Config文件中,以控制只有订阅者可以看到的站点的哪些部分。可能比使用基于配置文件字段的条件包装内容更好。