c# - 后备策略日志授权事件

标签 c# asp.net-core authorization asp.net-identity

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

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

    services.AddControllers();

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

    });

    // ..
}

最佳答案

FallbackPolicy 在没有与任何资源关联的 IAuthorizeData 实例(例如来自 AuthorizeAttribute)时使用,并且仅由 授权中间件。我认为在这种情况下,按照您的需要触发 OnAuthFailureOnTokenValidated 之类的事件会令人困惑。但这是你的部分。在这里,我只想展示一个点,您可以在该点注入(inject)代码来引发您想要的事件。实际上它只是一种内联授权处理程序,您可以在使用 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();

关于c# - 后备策略日志授权事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66756249/

相关文章:

c# - 重用 SqlDataRecord 是否安全?

c# - 通过 UnaryExpression 访问对象属性值

c# - C# 中未处理的异常与 C++ CLI Wrapper 交谈

c# - Asp.net 核心本地化 有没有办法允许所有文化?

reactjs - 更改登录/注销时的 React 按钮文本

api - 如何验证每个用户可以使用 OAuth 和 OpenID Connect 访问哪些资源?

c# - 具有 Linq to Sql 扩展的 DateTime 的子字符串

asp.net-core - 如何使用 Asp.Net core 2.0 Webapi 写入 wwwroot 中的文件

json - 为 appsettings.json 引用单独的连接字符串文件?

c# - 是否有行为类似于 Active Directory 的权限和组的 C# 库?