コード例 #1
0
ファイル: ASFBuilderExtensions.cs プロジェクト: leigoCQ/ASF
        public static ASFBuilder AddAuthenticationJwtBearer(this ASFBuilder build, TokenOptions options)
        {
            build.Services.AddSingleton <IAccessTokenGenerate>(new AccessTokenGenerate(options));
            var tokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey         = options.SigningCredentials.Key,
                ValidateIssuer           = true,
                ValidIssuer           = options.Issuer,
                ValidateAudience      = true,
                ValidAudience         = options.Audience,
                ValidateLifetime      = true,
                ClockSkew             = TimeSpan.Zero,
                RequireExpirationTime = true
            };

            build.Services.AddAuthentication(opt =>
            {
                opt.DefaultScheme = options.DefaultScheme;
            })
            .AddJwtBearer(options.DefaultScheme, opt =>
            {
                opt.RequireHttpsMetadata      = options.RequireHttpsMetadata;
                opt.TokenValidationParameters = tokenValidationParameters;
            });

            return(build);
        }
コード例 #2
0
ファイル: ASFBuilderExtensions.cs プロジェクト: leigoCQ/ASF
        /// <summary>
        /// 添加Jwt授权
        /// </summary>
        /// <param name="build"><see cref="ASFBuilder"/></param>
        /// <param name="action"></param>
        /// <returns></returns>
        public static ASFBuilder AddAuthenticationJwtBearer(this ASFBuilder build, Action <TokenOptions> action)
        {
            TokenOptions options = new TokenOptions();

            action?.Invoke(options);
            return(build.AddAuthenticationJwtBearer(options));
        }
コード例 #3
0
        /// <summary>
        /// 添加ASF核心服务
        /// </summary>
        /// <param name="services"></param>
        /// <param name="startupAction">ASF启动配置函数</param>
        /// <returns></returns>
        internal static IServiceCollection AddASFCore(this IServiceCollection services, Action <ASFBuilder> startupAction)
        {
            ASFBuilder builder = new ASFBuilder(services);

            startupAction?.Invoke(builder);
            builder.Build();
            return(services);
        }
コード例 #4
0
 /// <summary>
 /// 注入缓存仓储层
 /// </summary>
 /// <param name="builder"></param>
 private static void AddRepositoriesCache(this ASFBuilder builder)
 {
     builder.Services.AddScoped <IUnitOfWork, UnitOfWork>();
     builder.Services.AddScoped <ILoggingRepository, LogInfoRepository>();
     builder.AddAccountRepositoryCache <AccountRepository>();
     builder.AddPermissionRepositoryCache <PermissionRepository>();
     builder.AddRoleRepositoryCache <RoleRepository>();
 }
コード例 #5
0
ファイル: ASFBuilderExtensions.cs プロジェクト: lance2088/ASF
 /// <summary>
 /// 注入缓存仓储层
 /// </summary>
 /// <param name="builder"></param>
 private static void AddRepositoriesCache(this ASFBuilder builder, ASFOptions options)
 {
     builder.Services.AddDbContext <RepositoryContext>(opt => opt.UseSqlite(options.DbConnectionString), ServiceLifetime.Scoped);
     builder.Services.AddScoped <IUnitOfWork, UnitOfWork>();
     builder.Services.AddScoped <ILoggingRepository, LogInfoRepository>();
     builder.AddAccountRepositoryCache <AccountRepository>();
     builder.AddPermissionRepositoryCache <PermissionRepository>();
     builder.AddRoleRepositoryCache <RoleRepository>();
 }
コード例 #6
0
ファイル: ASFBuilderExtensions.cs プロジェクト: lance2088/ASF
        public static ASFBuilder AddSQLiteCache(this ASFBuilder builder, Action <ASFOptions> startupAction)
        {
            ASFOptions options = new ASFOptions();

            startupAction?.Invoke(options);
            builder.Services.AddAnticorrsives(options);
            builder.AddRepositoriesCache(options);
            return(builder);
        }
コード例 #7
0
ファイル: ASFBuilderExtensions.cs プロジェクト: lance2088/ASF
        public static ASFBuilder AddSQLiteCache(this ASFBuilder builder, string dbConnectionString)
        {
            var options = builder.Services.GetDefaultConfiguration();

            options.DbConnectionString = dbConnectionString;
            builder.Services.AddAnticorrsives(options);
            builder.AddRepositoriesCache(options);
            return(builder);
        }
コード例 #8
0
 public static ASFBuilder AddDbContext(this ASFBuilder builder, Action <DbContextOptionsBuilder> configureDbContext, bool allowCache)
 {
     if (allowCache)
     {
         builder.AddDbContextCache(configureDbContext);
     }
     else
     {
         builder.AddDbContext(configureDbContext);
     }
     return(builder);
 }
コード例 #9
0
ファイル: ASFBuilderExtensions.cs プロジェクト: leigoCQ/ASF
 public static ASFBuilder AddDbContext(this ASFBuilder builder, Action <DbContextOptionsBuilder> configureDbContext, IHostingEnvironment environment)
 {
     if (environment.IsDevelopment())
     {
         builder.AddDbContext(configureDbContext);
     }
     else
     {
         builder.AddDbContextCache(configureDbContext);
     }
     return(builder);
 }
コード例 #10
0
        /// <summary>
        /// 添加添加ASF核心服务
        /// </summary>
        /// <param name="services"></param>
        /// <param name="startupAction">ASF启动配置函数</param>
        /// <returns></returns>
        public static IServiceCollection AddASFCore(this IServiceCollection services, Action <ASFBuilder> startupAction)
        {
            var assembly = typeof(ASFBuilder).GetTypeInfo().Assembly;

            services.AddMvcCore()
            .AddApplicationPart(assembly)
            .AddControllersAsServices()
            .AddAuthorization()
            .AddJsonFormatters()
            .AddApiExplorer();

            ASFBuilder builder = new ASFBuilder(services);

            startupAction?.Invoke(builder);
            builder.Build();
            return(services);
        }
コード例 #11
0
 /// <summary>
 /// 注入缓存仓储层
 /// </summary>
 /// <param name="builder"></param>
 private static void AddRepositoriesCache(this ASFBuilder builder)
 {
     // builder.AddAccountRepositoryCache<AccountRepository>();
 }
コード例 #12
0
 public static ASFBuilder AddDbContextCache(this ASFBuilder builder, Action <DbContextOptionsBuilder> configureDbContext)
 {
     builder.Services.AddDbContext <RepositoryContext>(configureDbContext);
     builder.AddRepositoriesCache();
     return(builder);
 }
コード例 #13
0
ファイル: ASFBuilderExtensions.cs プロジェクト: leigoCQ/ASF
        /// <summary>
        /// 添加Jwt授权
        /// </summary>
        /// <param name="build"><see cref="ASFBuilder"/></param>
        /// <param name="action"></param>
        /// <returns></returns>
        public static ASFBuilder AddAuthenticationJwtBearer(this ASFBuilder build, IConfiguration configuration)
        {
            TokenOptions options = configuration.Get <TokenOptions>();

            return(build.AddAuthenticationJwtBearer(options));
        }
コード例 #14
0
ファイル: ASFBuilderExtensions.cs プロジェクト: leigoCQ/ASF
 /// <summary>
 /// 添加Jwt授权
 /// </summary>
 /// <param name="build"><see cref="ASFBuilder"/></param>
 public static ASFBuilder AddAuthenticationJwtBearer(this ASFBuilder build)
 {
     return(build.AddAuthenticationJwtBearer(new TokenOptions()));
 }