将数据与用户关联

时间:2011-09-06 12:00:51

标签: asp.net asp.net-mvc asp.net-mvc-3 authentication

对于我的第一个ASP.NET MVC 3应用程序,我使用aspnet_Usersaspnet_Roles表来为我的用户和一些角色提供身份验证。这似乎工作得很好。另外,我想在登录用户和各种表中的行之间建立关联。

作为一个具体的例子,我有一个Recipes表,其中包含特定于配方(名称,日期,属性)的列以及UserID列。 UserID列当前是我的IceCreamDB中的Users表的外键(不是aspnetdb中的aspnet_Users表),其中包含有关系统用户的各种特定于域的信息。因此,通过在名为Matt的Users表中创建具有一些整数UserId的用户,然后在创建和更新Recipes表期间使用该UserId,创建一个检索所有Matt配方的查询非常容易。大。

为了将登录用户“itsmatt”(从aspnet_Users表)绑定到我的IceCreamDB的用户表UserId for Matt,我在IceCreamDB Users表中有一个Guid列,其中填入了aspnet_Users Id(它是一个Guid)登录。

IceCreamDB的用户表:

 UserId     1               // primary key used as FK for other tables 
 UserName   Matt
 Phone      555-1212
 Department Product Development
 Building   2-A
 Office     221
 UserGuid   7fc75a6c-7e32-43f3-be8c-be0122bf54cb // Guid from aspnetdb User table

这样可行 - 作为用户注册过程的一部分,我创建一个aspnet_User,设置任何角色(例如,“管理员”,“所有者”,“生产”)是合适的,然后创建一个用户条目IceCreamDB Users表,将Guid复制到新行。这让我可以登录网站查看我的食谱或订单。

但是我觉得我已经在家里酿造了这个解决方案,并且可能有更好的,不同的方法来做到这一点。我想要一些指导。

2 个答案:

答案 0 :(得分:2)

据我所知,这是一个非常常见的解决方案。我知道另外两个人正在使用aspnet_Profile进行简单设置,或者编辑aspnet_Users表,这不是一个好的解决方案,因为如果你有更多的应用程序(aspnet_Applications )使用相同的aspnet_Users你最终在该表上有一个应用程序可能使用的字段(不可为空)而另一个不可用。

this tutorial中,他们基本上都在做同样的事情。

答案 1 :(得分:2)

对我来说没关系。成员资格提供程序也相反 - 它有一个provideruserkey属性,存储在数据库中,该属性在aspnet_users表中包含UserId值1。

因此,如果它对微软有好处,那么对你的情况来说应该是好的: - )

HTH。