对于我的第一个ASP.NET MVC 3应用程序,我使用aspnet_Users
和aspnet_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复制到新行。这让我可以登录网站查看我的食谱或订单。
但是我觉得我已经在家里酿造了这个解决方案,并且可能有更好的,不同的方法来做到这一点。我想要一些指导。
答案 0 :(得分:2)
据我所知,这是一个非常常见的解决方案。我知道另外两个人正在使用aspnet_Profile
进行简单设置,或者编辑aspnet_Users
表,这不是一个好的解决方案,因为如果你有更多的应用程序(aspnet_Applications
)使用相同的aspnet_Users
你最终在该表上有一个应用程序可能使用的字段(不可为空)而另一个不可用。
在this tutorial中,他们基本上都在做同样的事情。
答案 1 :(得分:2)
对我来说没关系。成员资格提供程序也相反 - 它有一个provideruserkey属性,存储在数据库中,该属性在aspnet_users表中包含UserId值1。
因此,如果它对微软有好处,那么对你的情况来说应该是好的: - )
HTH。