c# - 如何记录未经授权的访问尝试
问题描述
我有 .Net Core 2.1 应用程序并添加了 JWT 授权
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(o =>
{
...
});
如何记录尝试访问具有[Authorize]
属性的操作?我尝试使用此方法https://stackoverflow.com/a/46963194/7137259并注入我的 Logger,但我的 logger 使用 Entity DB Context,我无法将作用域 Logger 注入到IConfigureNamedOptions
. 另外,未经授权时如何返回正常响应?
解决方案
您可以在 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;
}
};
});
推荐阅读
- python-3.x - Python 流数据流“WriteToPubSub”行为
- c++ - 使用 CGI C++ 单击 HTML 页面中的按钮
- kotlin - 如何在最新的kotlin-couroutine中使用extend函数中的协程
- java - Eclipse Java Oxygen 未启动
- python - 为什么 Pandas 会从样本中重新采样?
- r - 如何在tidyverse包中使用左连接只匹配两个dfs中具有多个不同变量的第一个?
- visual-studio-code - 通过 Visual Studio Code 中的代码片段添加命名空间
- mongodb - 如何为 MongoDb TTL 索引编写集成测试
- http - 键入'_InternalLinkedHashMap
' 不是 Flutter 中使用 MultipartRequest 进行类型转换的“String”类型的子类型 - powershell - cURL 到 Powershell 转换的问题