我需要根据使用哪个身份验证方案来对用户进行身份验证来实现不同的逻辑。目前我正在 HttpContext 上使用
IAuthenticateResultFeature
功能,但我在对其进行单元测试时遇到了很大的困难。另外,它不太适合我,因为获取它的整个代码是:
CurrentAuthScheme = context.HttpContext
.Features.Get<IAuthenticateResultFeature>()?
.AuthenticateResult?
.Ticket?.AuthenticationScheme;
而且它实际上并没有那么好用,因为它只是返回传递给授权属性的内容,而不是实际使用的方案。所以如果我使用例如:
[Authorize(AuthenticationSchemes = "Scheme1,Scheme2")]
此代码将返回
Scheme1,Scheme2
,如果我需要在端点上有多个方案,这绝对不理想。
是否有任何方法可以实际检查请求使用了哪个身份验证方案?对 ClaimsPrincipal 或任何允许的任何修改,只是为了知道实际使用了哪个方案。
在控制器中,您可以通过以下方式检索当前使用的身份验证方案
User.Identity.AuthenticationType
或通过 HttpContext
HttpContext.User.Identity.AuthenticationType