public void OnAuthorization(AuthorizationFilterContext context) { if (context.HttpContext.User.Identity.IsAuthenticated) { ClaimsPrincipal user = context.HttpContext.User; string id = user.Claims.First(x => x.Type == JwtClaimIdentifiers.Id).Value; var shopId = user.Claims.First(x => x.Type == JwtClaimIdentifiers.ShopId).Value; var userName = user.Claims.First(x => x.Type == JwtClaimIdentifiers.UserName).Value; BizBookUser appUser = new BizBookUser() { Id = id, ShopId = shopId, UserName = userName }; context.HttpContext.Items[HeaderNames.AppUser] = appUser; context.HttpContext.Items[HeaderNames.CorrelationId] = context.HttpContext.Request.GetHeaderValue(HeaderNames.CorrelationId); context.HttpContext.Items[HeaderNames.SessionId] = context.HttpContext.Request.GetHeaderValue(HeaderNames.SessionId); } else { context.Result = new StatusCodeResult(StatusCodes.Status401Unauthorized); } }
public override void OnActionExecuting(ActionExecutingContext actionContext) { base.OnActionExecuting(actionContext); CorrelationId = actionContext.HttpContext.Items[HeaderNames.CorrelationId].ToString(); SessionId = actionContext.HttpContext.Items[HeaderNames.SessionId].ToString(); AppUser = actionContext.HttpContext.Items["AppUser"] as BizBookUser; Controller = actionContext.Controller; Controller.AppUser = AppUser; TelemetryClient = Controller.TelemetryClient as TelemetryClient; TelemetryClient.SetGlobalProperties(SessionId, CorrelationId, AppUser, actionContext.ActionDescriptor.DisplayName); }
public static void SetGlobalProperties(this TelemetryClient telemetry, string sessionId, string correlationId, BizBookUser appUser, string method) { telemetry.Context.GlobalProperties[HeaderNames.SessionId] = sessionId; telemetry.Context.GlobalProperties[HeaderNames.CorrelationId] = correlationId; telemetry.Context.GlobalProperties[HeaderNames.UserName] = appUser.UserName; telemetry.Context.GlobalProperties[HeaderNames.ShopId] = appUser.ShopId; telemetry.Context.GlobalProperties[HeaderNames.RequestMethod] = method; }