0

我正在使用声明身份验证并使用 Thinktecture IdentityModel 的 MVC 网站上工作。

每个用户都有一组声明:城市、用户名、电子邮件、角色、生日。

我在数据库中有 3 个表:USERS、USERS_PROFILES 和 USERS_CLAIMS。

USERS 包含列用户名和电子邮件;

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

我将这些值保存在这些表中......我将角色保存在 USERS_CLAIMS 表中。

当我加载一个用户时,我用这些表中的数据填充 ClaimsIdentity。

问题是:

例如,当我创建用户时,我应该将电子邮件同时保存在 USERS 表和 USERS_CLAIMS 表中吗?

似乎数据复制,但我不确定......或者我应该只保存其中一个?

您对此有何看法?除了角色之外,还有哪些声明不适合 USERS 或 USERS_PROFILE 表?

谢谢你,

米格尔

4

2 回答 2

0

当您使用MVC(模型视图控制器)时,为什么不使用Models

你是一个模型,只需在你的文件夹中ClaimsIdentity创建一个,然后像这样使用它:ClaimsIdentityModel.csModel

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

然后,当您加载用户时,只需填写一个ClaimsIdentityModel. 你完成了。

于 2013-10-10T21:26:59.600 回答
0

正如每个表的名称所暗示的,这些值应仅代表那些值。

  • 用户由用户名标识。电子邮件是用户提出的索赔之一。
  • 角色也是声明,城市也是如此。

如果您正在创建配置文件表并在配置文件中添加城市,应避免将其添加到索赔表中。但是您需要通过查询 Profile 表来处理 City 的要求作为声明,并根据需要提供值作为声明。

ClaimsIdentity 是 System.Security.Principal.GenericIdentity 类型,用于在基于声明的方法中识别用户。

(制作模型将有助于视图)

于 2013-10-14T08:50:30.743 回答