在 ASP.NET Core 中,角色授权是身份验证和授权体系中的重要一环。然而,有时候我们可能会遇到一些看似简单却令人困惑的问题。本文将通过一个实际案例,讲解在使用 Windows 身份验证和角色授权时遇到的问题及其解决方案。
问题描述
假设我们有一个 ASP.NET Core Razor Pages 应用程序,使用 Windows 用户进行身份验证,并通过 AddNegotiate() 方法实现。角色是根据 Active Directory(AD)组通过声明转换器(Claims Transformer)分配的。我们定义了一个角色名为 “Admin”,并设置了一个基于这些角色的策略 “SiteAuth”。以下是我们遇到的问题:
- 使用
[Authorize(Policy = "SiteAuth")]可以正常授权访问页面。 - 然而,
[Authorize(Roles = "Admin")]却不能授权,用户会被重定向到未授权页面。 - 使用
[Authorize]或者检查if (User.HasClaim(claim => claim.Value == "Admin"))都能正常工作。
代码分析
首先,让我们看一下关键的代码片段:
builder.Serv
订阅专栏 解锁全文

765

被折叠的 条评论
为什么被折叠?



