2

是否可以在不创建我自己的或的情况下引发FallbackPolicy授权事件?理想情况下,我想引发或事件并相应地记录。AuthorizationHandlerAuthorizationFilterOnTokenValidatedOnAuthFailure

public void ConfigureServices(IServiceCollection services)
{
    services.AddMicrosoftIdentityWebApiAuthentication(Configuration);

    services.AddControllers();

    services.AddAuthorization(options =>
    {
        options.FallbackPolicy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();

    });

    // ..
}
4

1 回答 1

2

FallbackPolicy当没有与任何资源关联的实例IAuthorizeData(例如 from AuthorizeAttribute)并且它仅由 使用时使用AuthorizationMiddlewareOnAuthFailure我认为在这种情况下触发像你想要的那样或你想要的事件是令人困惑的OnTokenValidated。但那是你的部分。在这里,我只想展示您可以注入代码以引发您想要的事件的一点。实际上它只是一种内联授权处理程序,您可以在构建回退策略时正确指定代码AuthorizationPolicyBuilder,如下所示:

options.FallbackPolicy = new AuthorizationPolicyBuilder()
                             .RequireAuthenticatedUser()
                             .RequireAssertion(context => {
                                 //here you can inject your code
                                 //return true/false to make the requirement valid/invalid
                                 //for logging purpose, we can return true here
                                 return true;
                              }).Build();
于 2021-03-23T03:23:57.930 回答