public async override Task RemoveClaimsAsync(ApplicationUser user, IEnumerable <Claim> claims, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); ValidateParameters(user, claims); var auditableObjs = new AuditableObjects <ApplicationUserClaim>(); foreach (var claim in claims) { var matchedClaims = await Context.Set <ApplicationUserClaim>().Where(uc => uc.UserId.Equals(user.Id) && uc.ClaimValue == claim.Value && uc.ClaimType == claim.Type).ToListAsync(cancellationToken); foreach (var userClaim in matchedClaims) { Context.Set <ApplicationUserClaim>().Remove(userClaim); auditableObjs.AddObject(userClaim.Id.ToString(), userClaim); } } if (auditableObjs.Any() && !user.IsSystemUser) { await auditTrailProvider.AddTrailsAsync(AuditOperation.Delete, userPrincipalBuilder.UserPrincipal.UserName, auditableObjs); } }