public ImpersonationService(IHttpContextAccessor httpContextAccessor, IDataProtectionProvider protectionProvider)
 {
     _httpContext = httpContextAccessor.HttpContext;
     _cookie      = protectionProvider != null //If protectionProvider is null then impersonation is turned off
             ? new ImpersonationCookie(_httpContext, protectionProvider)
             : null;
 }
Beispiel #2
0
        /// <summary>
        /// This will ensure any impersonation cookie is deleted when a user signs out
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public Task SigningOutAsync(CookieSigningOutContext context)
        {
            var cookie = new ImpersonationCookie(context.HttpContext, null);

            cookie.Delete();

            return(Task.CompletedTask);
        }
        /// <summary>
        /// Creates ImpersonationHandler. NOTE: if protectionProvider is null then impersonation is turned off
        /// </summary>
        /// <param name="httpContext"></param>
        /// <param name="protectionProvider"></param>
        /// <param name="originalClaims"></param>
        public ImpersonationHandler(HttpContext httpContext, IDataProtectionProvider protectionProvider, List <Claim> originalClaims)
        {
            _httpContext        = httpContext ?? throw new ArgumentNullException(nameof(httpContext));
            _protectionProvider = protectionProvider;
            _cookie             = new ImpersonationCookie(httpContext, protectionProvider);
            _originalClaims     = originalClaims;

            _impersonationState = GetImpersonationState();
            //I use a lazy access to the cookie value as this takes a (bit) more time
            _startData = new Lazy <ImpersonationData>(() => new ImpersonationData(_cookie.GetCookieInValue()));
        }