我试图围绕Asp.Net标识。但不幸的是,现有的文档不是很清楚,或者我觉得它只是在我脑海中:(
然而,以下是基于全天研究和阅读的高水平理解。当用户登录时,会提供一组声明。使用这些声明,您可以启用/禁用功能。例如,如果用户声称他们的年龄是30岁,那么您可以允许他们查看仅限成人的内容,但如果他们声称是17岁,那么您拒绝访问他/她:)。此外,“Admin”,“Super Users”等用户的角色可用于启用/禁用访问。如果用户具有“管理员”角色,则可以允许他们访问X操作方法。
但是,有很多事情让我感到困惑,并且不允许我清楚地把头包裹起来。
情景
假设我想用一个控制器创建一个新的应用程序。该控制器有两种操作方法Add
和Edit
。我猜我需要为每个用户提出两项索赔
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
表来创建这些声明?我是否可以通过个人资料将其分配给用户?
如果我将来需要添加新的声明,我需要手动将此新声明手动分配给所有用户,该怎么办?或者有没有办法将这些声明分配给用户可以继承的默认角色?
这可能不是一个很好的问题,但回答它将有助于我更好地理解身份。
答案 0 :(得分:1)
应在用户登录时设置声明。您不应该直接在数据库中设置它。请参阅this post以了解何时设置声明。
声明是有关用户的信息。然后,您可以使用该信息进行授权(或其他任何内容)。
请注意,您应始终为Claims
设置一个值,否则您可能会遇到不合规格的声明错误。