在數據庫中,我有表:USERS,USERS_PROFILES,USERS_CLAIMS。聲明身份驗證的數據庫架構
create table dbo.USERS
(
Id int identity not null,
Username nvarchar (120) not null,
Email nvarchar (120) not null
);
create table dbo.USERS_PROFILES
(
Id int not null,
[Name] nvarchar (80) not null
);
create table dbo.USERS_CLAIMS
(
Id int not null,
[Type] nvarchar (200) not null,
Value nvarchar (200) not null,
);
我正在使用索賠授權。當用戶註冊並創建身份時。 身份包含的權利要求和每個要求都有一個類型和值:從USERS EMAILTYPE>從用戶的電子郵件 NAMETYPE>名稱從USERS_PROFILES 角色類型>直接
UsernameType>用戶名從USERS_CLAIMS
所以我創建來自3個表中多列的身份。
我結束了這一點,因爲我遷移到索賠驗證。
問題
我應該移動用戶名,電子郵件和名稱USERS_CLAIMS? 的USERS_PROFILES表將消失... 和用戶表將包含只喜歡信息「用戶ID,LastLoginDate,CreatedDate,...」
如果我想要得到的用戶名的用戶,我只想拿到類型的用戶名的索賠...
如果我想登錄用戶,我只需要獲取所有聲明並創建身份。
因此,身份模型與SQL表非常相似。
這是否有意義?你會如何設計表格?
謝謝你, 米格爾
是的,那正是我所害怕的......我應該爲角色設置角色表並將其他信息存儲在USERS表上?然後將所有信息遷移到我的應用程序的聲明標識上? –
是的。您通過聲明呈現數據的事實不應該顯着改變您的模式。使數據存儲容易訪問和操作。從單個行返回多個聲明比從多個聲明返回單個行更加容易。 – Mitch