如何记录未经授权的访问尝试

时间:2018-08-04 11:24:46

标签: c# asp.net-core

我有.Net Core 2.1应用程序,并且添加了JWT授权

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(o =>
            {
                ...
            });

如何记录具有[Authorize]属性的操作的尝试? 我试图使用此方法https://stackoverflow.com/a/46963194/7137259并注入我的Logger,但是我的记录器使用Entity DB Context,并且无法将范围限定的Logger注入IConfigureNamedOptions。 另外,未经授权后如何返回正常响应?

1 个答案:

答案 0 :(得分:1)

您可以在JwtBearerEvents中解析作用域服务,也可以在那里修改响应:

.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, o =>
{
    o.Events = new JwtBearerEvents()
    {
        OnAuthenticationFailed = c =>
        {
            var svc = c.HttpContext.RequestServices.GetRequiredService<IMyService>();
            c.NoResult();
            c.Response.StatusCode = 500;
            c.Response.ContentType = "text/plain";
            c.Response.WriteAsync(c.Exception.ToString()).Wait();
            return Task.CompletedTask;
        }
    };
});
相关问题