我有一个dotnet core 2网络应用程序,我已经使用Enricher配置了SeriLog,因此我可以在每个请求中记录用户的电子邮件,在"配置&#34 ;方法我:
// Log user
app.Use(async (context, next) =>
{
using (Serilog.Context.LogContext.PushProperty("UserId", context.User.Claims.Where(a => a.Type == ClaimTypes.Email).FirstOrDefault().Value))
{
await next.Invoke();
}
});
app.UseMvc();
不幸的是,这是在身份验证之前发生的,因此永远不会设置电子邮件。
如何在身份验证后实现此目的?身份验证在" ConfigureServices"中配置。标准方式的方法如下:
services.AddAuthentication(...
答案 0 :(得分:4)
我遇到了类似的问题,需要在自定义中间件组件中使用身份验证数据。 简单地说
app.UseAuthentication();
在我的自定义使用中间件之前,使用相关用户数据填充上下文
希望它有所帮助。