【发布时间】:2018-11-07 03:52:00
【问题描述】:
我尝试在网络上到处搜索,但我似乎无法弄清楚这个重要部分。
基本上,如果我们在检查用户是否属于某个角色时每次都调用数据库 - 这将对性能产生负面影响。
我看到列出所有用户角色的代码示例,例如
var roles = ((ClaimsIdentity)User.Identity).Claims
.Where(c => c.Type == ClaimTypes.Role)
.Select(c => c.Value);
代码可用于控制器动作,也可以在属性过滤器中以相同的方式获取声明。
从这个例子我推断Claims 开始发挥作用(似乎是最高效的解决方案)。
我试图找出 如果 Authorize 具有角色的属性验证用户的声明,但 official Microsoft documentation 没有涵盖这一点。
AuthorizeAttribute类指定对控制器或操作方法的访问仅限于满足授权要求的用户。
属性:
Roles- 获取或设置有权访问控制器或操作方法的用户角色。
这就是我们所拥有的范围。
【问题讨论】:
标签: c# asp.net-mvc asp.net-identity