2013-10-10 38 views
0

我正在使用聲明身份驗證並使用Thinktecture IdentityModel的MVC網站上工作。如何使用Thinktecture IdentityModel保存MVC站點中使用的聲明

每個用戶都有一組索賠:城市,用戶名,電子郵件,角色,出生日期。

我在數據庫中有3個表:USERS,USERS_PROFILES和USERS_CLAIMS。

USERS包含用戶名和電子郵件列;

USERS_PROFILES包含城市和出生日期列。

我將這些值保存在這些表中......並且將角色保存在USERS_CLAIMS表中。

當我加載用戶時,我用這些表中的數據填充ClaimsIdentity。

的問題是:

當我創建一個用戶要我舉個例子,保存電子郵件無論是在USERS表和USERS_CLAIMS表?

似乎數據複製,但我不知道...或者我應該保存在其中只有一個?

你對此有何處理?除了角色之外,哪種類型的聲明不符合USERS或USERS_PROFILE表?

謝謝你,

米格爾

回答

0

當你使用MVC(模型 - 視圖 - 控制器),你爲什麼不使用Models

ClaimsIdentity是一個模型,只需創建一個在您Model文件夾ClaimsIdentityModel.cs,並使用它像這樣:

public class ClaimsIdentityModel 
{ 
    public string Username { get; set; } 
    public string Email { get; set; } 
    public string City { get; set; } 
    public Datetime Birthdate{ get; set; }   
} 

然後,當你加載你的用戶,只需填寫一個ClaimsIdentityModel。你完成了。

+0

但在桌子上......你將如何存儲它? –

+0

商店是你想要在你的桌子上。創建一個方法來填充你的'ClaimsIdentityModel'(例如用LINQ)。用來填充模型的數據是否存儲在一個或一百個表中並不重要... – AlexB

0

正如每個表格的名稱所表明的那樣,這些值只能代表那些值。

  • 用戶以用戶名標識。電子郵件是用戶完成的一項聲明。
  • 角色也是索賠,所以城市。

如果您正在創建配置文件表並在配置文件中添加城市,則應避免將其添加到索賠表中。但是您需要通過查詢Profile表來處理City的要求,並根據需要提供聲明價值。

ClaimsIdentity是System.Security.Principal.GenericIdentity類型,用於在基於索賠的方法中識別用戶。

(製作模型將有助於在視圖中)

相關問題