Example #1
0
        /// <summary>
        /// 根据Http上下文生成声明
        /// 具体生成服务通过静态键值对注册,键为生成器名称
        /// 该方法将调用对应名称的生成服务来完成
        /// </summary>
        /// <param name="generator"></param>
        /// <param name="httpContext"></param>
        /// <returns></returns>
        public async Task <ClaimsIdentity> Generate(HttpClaimGenerator generator, HttpContext httpContext)
        {
            if (!_httpClaimGeneratorServiceFactories.TryGetValue(generator.Type, out IFactory <IHttpClaimGeneratorService> generatorServiceFactory))
            {
                var fragment = new TextFragment()
                {
                    Code = TextCodes.NotFoundHttpClaimGeneratorServiceByType,
                    DefaultFormatting = "找不到类型为{0}的Http声明生成服务,发生位置:{1}",
                    ReplaceParameters = new List <object>()
                    {
                        generator.Type, $"{this.GetType().FullName}.HttpClaimGeneratorServiceFactories"
                    }
                };

                throw new UtilityException((int)Errors.NotFoundHttpClaimGeneratorServiceByType, fragment);
            }

            var result = await generatorServiceFactory.Create().Do(httpContext);

            return(result);
        }
Example #2
0
 public async Task Update(HttpClaimGenerator generator)
 {
     await _httpClaimGeneratorStore.Update(generator);
 }
Example #3
0
 public async Task Delete(HttpClaimGenerator generator)
 {
     await _httpClaimGeneratorStore.Delete(generator.ID);
 }
Example #4
0
 public async Task Add(HttpClaimGenerator generator)
 {
     await _httpClaimGeneratorStore.Add(generator);
 }