Asp.net core 评估活动中的属性

Asp.net core 评估活动中的属性,asp.net-core,asp.net-core-3.1,Asp.net Core,Asp.net Core 3.1,可以使用[authorize]属性对操作进行授权。但我只想在特定条件下对操作执行授权,因此无法使用此属性。我认为我无法使用IAuthorizationService.AuthorizeAsync,因为我没有任何策略名称。这是我在启动时的服务配置 services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApi(Configuration, "

可以使用[authorize]属性对操作进行授权。但我只想在特定条件下对操作执行授权,因此无法使用此属性。我认为我无法使用IAuthorizationService.AuthorizeAsync,因为我没有任何策略名称。这是我在启动时的服务配置

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddMicrosoftIdentityWebApi(Configuration, "AzureAdB2C");

因此,我的问题是,如何将[Authorize]评估移动到操作代码中?

AuthorizeAttribute
转换为
AuthorizeFilter
并使用一些与简单的
IAauthorizationService.AuthorizeAsync
不同的代码执行此筛选器。但是,如果您仍然想使用它,我们可以通过使用
iaAuthorizationPolicyProvider.GetDefaultPolicyAsync
获取默认策略(由
[Authorize]
使用,而不指定任何策略)。之后,您可以授权
用户
获得
授权结果
。如果属性
succeed
为true,则为succeed。否则,您可以在属性
failure
(类型为
AuthorizationFailure
)中找到详细的故障。代码如下:

public class TestController {
     readonly IAuthorizationService _authorizationService;
     readonly IAuthorizationPolicyProvider _authorizationPolicyProvider;
     public TestController(IAuthorizationService authorizationService,
                           IAuthorizationPolicyProvider authorizationPolicyProvider){
         _authorizationService = authorizationService;
         _authorizationPolicyProvider = authorizationPolicyProvider;
     }

     public async Task<IActionResult> SomeAction(){
          var defaultPolicy = await _authorizationPolicyProvider.GetDefaultPolicyAsync();
          var authResult = await _authorizationService.AuthorizeAsync(User, defaultPolicy);
          if(authResult.Succeeded){
             //do something ...
          }
     }
}
公共类TestController{
只读IAAuthorizationService\u授权服务;
只读IAAuthorizationPolicyProvider _authorizationPolicyProvider;
公共测试控制器(IAAuthorizationService授权服务,
IAAuthorizationPolicyProvider授权PolicyProvider){
_授权服务=授权服务;
_authorizationPolicyProvider=authorizationPolicyProvider;
}
公共异步任务SomeAction(){
var defaultPolicy=await_authorizationPolicyProvider.GetDefaultPolicyAsync();
var authResult=wait_authorizationService.authorizationAsync(用户,默认策略);
if(authResult.successed){
//做点什么。。。
}
}
}

User.Identity.IsAuthenticated如何?