我有.Net Core 2.1应用程序,并且添加了JWT授权
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(o =>
{
...
});
如何记录具有[Authorize]
属性的操作的尝试?
我试图使用此方法https://stackoverflow.com/a/46963194/7137259并注入我的Logger,但是我的记录器使用Entity DB Context,并且无法将范围限定的Logger注入IConfigureNamedOptions
。
另外,未经授权后如何返回正常响应?
答案 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;
}
};
});