我正试着把我的头绕在Asp上。净的身份。但不幸的是,可用的文档不是很清楚,或者我觉得它就在我的头上:(
然而,遵循是基于一整天的研究和阅读的高水平理解。当用户登录时,将提供一个声明集合。使用这些声明,您可以启用/禁用功能。例如,如果一个用户声称他们的年龄是30岁,那么你可以允许他们观看成人内容,但如果他们声称是17岁,那么你拒绝访问他/她:)。此外,角色的用户,如"管理员","超级用户"…可用于启用/禁用访问。如果用户具有"Admin"角色,他们可以允许他们访问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"可以添加"one_answers"可以编辑",但用户UserId = 5"可以添加"的用户不能编辑。
何时创建这些声明并将其分配给用户?我是否需要通过在AspNetUserClaims
表中手动插入这些声明来创建它们?我是否从用户的配置文件中将它们分配给用户?
如果将来需要添加新的索赔,是否需要手动将此新索赔分配给所有用户,该怎么办?或者是否有一种方法可以将这些声明分配给用户可以继承的默认角色?
这可能不是一个好问题,但回答它将帮助我更好地理解身份。
声明应该在用户登录时设置。您不应该直接在数据库中设置它。查看这篇文章来了解何时设置声明。
声明是关于用户的信息。然后,您可以使用该信息进行授权(或其他任何操作)。
注意,您应该始终为您的Claims
设置一个值,否则您可能会遇到不存在的索赔错误。