我正在做我的第一个基于ASP.NET成员资格的项目,我遇到了如何将我的自定义数据与特定成员联系起来的问题。这里的约定是什么?
例如,我想制作一个人们可以对不同事物进行投票的网络应用程序。为了确保人们不会一次又一次地投票,我想跟踪谁投票了什么民意调查。 (我提供了我的预期用途示例,但我主要对通用实现感兴趣)
有没有人知道已经在线编写的指南或其他有用的资源?
IF ** 它是相关的,我正在使用EF4进行数据库访问(我不直接需要EF和/或数据库访问的帮助,只有成员资格与其他数据相关) 。目前我正计划将成员资格存储在MsSQL中,而其他数据存储在MySQL中,因为GoDaddy在每个数据库上都有这个空间。
答案 0 :(得分:5)
您需要唯一标识当前登录的用户。您最有可能想要使用MembershipUser.ProviderUserKey
,这是MembershipProvider
特定风格提供的唯一标识符。如果是SqlMembershipProvider
,则此属性的值为Guid
。
所以你可以在你的投票记录上有一个属性,就像这样(假设你使用的是SqlMembershipProvider
):
public class Vote
{
public Guid UserId { get; set; }
// etc.
}
您可以像这样获取当前用户的ID:
Guid userId = (Guid)Membership.GetUser().ProviderUserKey;
Vote vote = new Vote { UserId = userId };
当然,您可以在此处进行查询,以确保在创建和保存新投票之前不存在Votes
UserId == userId
。