/// <summary> /// 获取用户角色列表。 /// </summary> /// <param name="userId">用户Id。</param> /// <returns>返回角色列表。</returns> public virtual IEnumerable <TRole> GetRoles(int userId) { return(RoleContext.AsQueryable() .Select() .InnerJoin <TUserRole>((r, ur) => r.RoleId == ur.RoleId) .Where <TUserRole>(x => x.UserId == userId) .AsEnumerable()); }
/// <summary> /// 获取用户角色列表。 /// </summary> /// <param name="userId">用户Id。</param> /// <param name="cancellationToken">取消标识。</param> /// <returns>返回角色列表。</returns> public virtual Task <IEnumerable <TRole> > GetRolesAsync(int userId, CancellationToken cancellationToken = default) { return(RoleContext.AsQueryable() .Select() .InnerJoin <TUserRole>((r, ur) => r.RoleId == ur.RoleId) .Where <TUserRole>(x => x.UserId == userId) .AsEnumerableAsync(cancellationToken)); }
/// <summary> /// 获取用户的所有角色。 /// </summary> /// <param name="user">用户实例对象。</param> /// <param name="cancellationToken">取消标志。</param> /// <returns>返回当前用户的所有角色列表。</returns> public override async Task <IList <string> > GetRolesAsync(TUser user, CancellationToken cancellationToken = default) { var roles = await RoleContext.AsQueryable() .Select(x => x.Name) .InnerJoin <TUserRole>((r, ur) => r.RoleId == ur.RoleId) .Where <TUserRole>(x => x.UserId == user.UserId) .AsEnumerableAsync(reader => reader.GetString(0), cancellationToken); return(roles.ToList()); }