Esempio n. 1
0
 /// <summary>
 /// 添加用户声明。
 /// </summary>
 /// <param name="user">当前用户实例对象。</param>
 /// <param name="claims">声明列表。</param>
 /// <param name="cancellationToken">取消标志。</param>
 public override async Task AddClaimsAsync(TUser user, IEnumerable <Claim> claims, CancellationToken cancellationToken = default)
 {
     if (user == null)
     {
         throw new ArgumentNullException(nameof(user));
     }
     if (claims == null)
     {
         throw new ArgumentNullException(nameof(claims));
     }
     await UserClaimContext.BeginTransactionAsync(async db =>
     {
         foreach (var claim in claims)
         {
             var dbClaim = CreateUserClaim(user, claim);
             await db.CreateAsync(dbClaim, cancellationToken);
         }
         return(true);
     }, cancellationToken : cancellationToken);
 }
Esempio n. 2
0
 /// <summary>
 /// 移除用户声明。
 /// </summary>
 /// <param name="user">用户实例。</param>
 /// <param name="claims">声明列表。</param>
 /// <param name="cancellationToken">取消标志。</param>
 public override async Task RemoveClaimsAsync(TUser user, IEnumerable <Claim> claims,
                                              CancellationToken cancellationToken = default)
 {
     if (user == null)
     {
         throw new ArgumentNullException(nameof(user));
     }
     if (claims == null)
     {
         throw new ArgumentNullException(nameof(claims));
     }
     await UserClaimContext.BeginTransactionAsync(async db =>
     {
         foreach (var claim in claims)
         {
             await db.DeleteAsync(
                 uc => uc.UserId == user.Id && uc.ClaimType == claim.Type && uc.ClaimValue == claim.Value, cancellationToken);
         }
         return(true);
     }, cancellationToken : cancellationToken);
 }