ASP.NET Core 中角色授权的困惑与解决

在 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值