回退策略日志授权事件
Fallback Policy Log Authorization Events
是否可以在不创建我自己的 AuthorizationHandler
或 AuthorizationFilter
的情况下引发 FallbackPolicy
授权事件?理想情况下,我想引发 OnTokenValidated
或 OnAuthFailure
事件并相应地记录。
public void ConfigureServices(IServiceCollection services)
{
services.AddMicrosoftIdentityWebApiAuthentication(Configuration);
services.AddControllers();
services.AddAuthorization(options =>
{
options.FallbackPolicy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
});
// ..
}
FallbackPolicy
在没有 IAuthorizeData
的实例(例如来自 AuthorizeAttribute
)与任何资源关联并且仅由 AuthorizationMiddleware
使用时使用。我认为在这种情况下随心所欲地触发 OnAuthFailure
或 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();
是否可以在不创建我自己的 AuthorizationHandler
或 AuthorizationFilter
的情况下引发 FallbackPolicy
授权事件?理想情况下,我想引发 OnTokenValidated
或 OnAuthFailure
事件并相应地记录。
public void ConfigureServices(IServiceCollection services)
{
services.AddMicrosoftIdentityWebApiAuthentication(Configuration);
services.AddControllers();
services.AddAuthorization(options =>
{
options.FallbackPolicy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
});
// ..
}
FallbackPolicy
在没有 IAuthorizeData
的实例(例如来自 AuthorizeAttribute
)与任何资源关联并且仅由 AuthorizationMiddleware
使用时使用。我认为在这种情况下随心所欲地触发 OnAuthFailure
或 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();