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);
            }
        }
示例#2
0
        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;
 }