何时创建Asp.Net标识并将其分配给用户?

时间:2016-09-19 00:56:22

标签: c# asp.net asp.net-mvc asp.net-identity claims-based-identity

我试图围绕Asp.Net标识。但不幸的是,现有的文档不是很清楚,或者我觉得它只是在我脑海中:(

然而,以下是基于全天研究和阅读的高水平理解。当用户登录时,会提供一组声明。使用这些声明,您可以启用/禁用功能。例如,如果用户声称他们的年龄是30岁,那么您可以允许他们查看仅限成人的内容,但如果他们声称是17岁,那么您拒绝访问他/她:)。此外,“Admin”,“Super Users”等用户的角色可用于启用/禁用访问。如果用户具有“管理员”角色,则可以允许他们访问X操作方法。

但是,有很多事情让我感到困惑,并且不允许我清楚地把头包裹起来。

情景

假设我想用一个控制器创建一个新的应用程序。该控制器有两种操作方法AddEdit。我猜我需要为每个用户提出两项索赔

new Claim {
  UserId = 10, 
  ClaimType = "Can Add", 
  ClaimValue = null
},

new Claim {
  UserId = 10, 
  ClaimType = "Can Edit", 
  ClaimValue = null
}

new Claim {
  UserId = 5, 
  ClaimType = "Can Edit", 
  ClaimValue = null
}

在这种情况下,Id = 10“可以添加”和“可以编辑”的用户但是UserId = 5“Can Add”by的用户无法编辑。

这些声明何时创建并分配给用户?我是否可以根据需要通过手动将其插入AspNetUserClaims表来创建这些声明?我是否可以通过个人资料将其分配给用户?

如果我将来需要添加新的声明,我需要手动将此新声明手动分配给所有用户,该怎么办?或者有没有办法将这些声明分配给用户可以继承的默认角色?

这可能不是一个很好的问题,但回答它将有助于我更好地理解身份。

1 个答案:

答案 0 :(得分:1)

应在用户登录时设置声明。您不应该直接在数据库中设置它。请参阅this post以了解何时设置声明。

声明是有关用户的信息。然后,您可以使用该信息进行授权(或其他任何内容)。

请注意,您应始终为Claims设置一个值,否则您可能会遇到不合规格的声明错误。