在我的母版页中,我有:
MembershipUser thisUser = Membership.GetUser();
loggedInUserID = thisUser.ProviderUserKey.ToString();
thisUser
可让我访问aspnet_Membership
中的所有字段。
我希望每个用户都有一个新字段isSubscribed
。我可以使用SQL查询来获取值,但我想知道是否有某种方法来修改成员用户对象,以便它也检索此值,因此可以从以下位置访问:
thisUser.isSubscribed.ToString();
感谢您的帮助!
答案 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文件中,以控制只有订阅者可以看到的站点的哪些部分。可能比使用基于配置文件字段的条件包装内容更好。