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

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

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

如何记录尝试访问具有[Authorize]属性的操作?我尝试使用此方法https://stackoverflow.com/a/46963194/7137259并注入我的记录器,但我的记录器使用实体数据库上下文,并且我无法将作用域记录器注入到IConfigureNamedOptions. 另外如何在未经授权时返回正常响应?


慕仙森
浏览 195回答 1
1回答

暮色呼如

您可以在 JwtBearerEvents 中解析您的范围服务,您也可以在那里修改响应:.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, o =>{&nbsp; &nbsp; o.Events = new JwtBearerEvents()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; OnAuthenticationFailed = c =>&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var svc = c.HttpContext.RequestServices.GetRequiredService<IMyService>();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.NoResult();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.Response.StatusCode = 500;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.Response.ContentType = "text/plain";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.Response.WriteAsync(c.Exception.ToString()).Wait();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return Task.CompletedTask;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; };});
打开App,查看更多内容
随时随地看视频慕课网APP