gpt4 book ai didi

asp.net-mvc - 声明授权和角色授权之间有根本区别吗?

转载 作者:行者123 更新时间:2023-12-01 02:11:34 24 4
gpt4 key购买 nike

VS2013,MVC5

我可能会弄错一些术语,因为我是这个话题的新手。

我读到的内容使我得出结论,声明可用于 认证授权 which are 2 very different concepts .假设这种想法是正确的,我的问题与 claim 有关,因为它们可能适用于 授权 ,而不是身份验证(或身份?-将身份视为身份验证的替代概念是否准确?)

Wikipedia article似乎和我读到的其他任何内容一样简洁(最后一节第一行)声明和角色之间的区别是:

distinction between what the user is/is not and what the user may/may not do

如果我使用声明来确定用户可以做什么或不可以做什么,我看不出这与角色做什么有什么不同。 This article有点暗示它是不同的,但是这个例子对我来说似乎是一样的, claim 例子只是一个更好的角色定义,是吗?

This article suggests几乎没有区别,但解释似乎暗示了绝对根本的区别,因为它开始在声明中使用一个值。但是除非该值允许声明将角色组合成一个声明,否则它仍然只是一个角色,是吗?如果您在大型应用程序中将角色组合到单个声明值中,虽然该方案可能更节省空间,但它是否还需要一种方法来稍后解码复合角色?

This previously linked article声明虽然 MVC5 中有一个用于声明的数据结构,但它与数据属性无关,因此使用声明进行授权是否不需要大量额外的编程或更复杂的声明引用?

所以这就是让我在帖子标题中提出问题的原因,有根本区别吗?因为如果不是,我不明白为什么我会为 使用声明。授权 .

我还没有足够的经验来完全理解声明如何用于 认证 ,但我知道使用第 3 方进行身份验证以及单点登录之类的事情具有重要值(value),但这不是我在这个问题上的重点。

最佳答案

你挖得太深了。角色和声明之间没有根本区别。以至于角色作为声明存储在身份验证 cookie 中。您可以很容易地创建适用于声明的身份验证属性。在框架中,只有角色周围有更多的代码。当您调用 IPrincipal.IsUserInrole("rolename") ,框架实际上会检查用户是否拥有 ClaimTypes.Role 类型的声明。值为 "rolename" .

我已经使用这些概念一段时间了,我的结论是声明可以为您提供更精细的身份验证级别。您也可以使用声明作为数据容器来添加到 auth-cookie。从这个意义上说,角色是相当不灵活的。

关于asp.net-mvc - 声明授权和角色授权之间有根本区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28772005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com