コード例 #1
0
ファイル: Startup.cs プロジェクト: sk81biz/sk81
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddHttpContextAccessor();

            services.AddControllers()
            .AddXmlSerializerFormatters()
            .AddJsonOptions(options =>
            {
                options.JsonSerializerOptions.WriteIndented    = false;
                options.JsonSerializerOptions.IgnoreNullValues = true;
                options.JsonSerializerOptions.Converters.Add(new ApiDateTimeConverter());
            });

            services.AddAuthentication("cookie")
            .AddScheme <AuthenticationSchemeOptions, CookieAuthHandler>("cookie", a => { })
            .AddScheme <AuthenticationSchemeOptions, ConfirmAuthHandler>("confirm", a => { });

            var builder = services.AddMvcCore(config =>
            {
                var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
                config.Filters.Add(new AuthorizeFilter(policy));
                config.Filters.Add(new TypeFilterAttribute(typeof(TenantStatusFilter)));
                config.Filters.Add(new TypeFilterAttribute(typeof(PaymentFilter)));
                config.Filters.Add(new TypeFilterAttribute(typeof(IpSecurityFilter)));
                config.Filters.Add(new TypeFilterAttribute(typeof(ProductSecurityFilter)));
                config.Filters.Add(new CustomResponseFilterAttribute());
                config.Filters.Add(new CustomExceptionFilterAttribute());
                config.Filters.Add(new TypeFilterAttribute(typeof(FormatFilter)));

                config.OutputFormatters.RemoveType <XmlSerializerOutputFormatter>();
                config.OutputFormatters.Add(new XmlOutputFormatter());
            });

            var diHelper = new DIHelper(services);

            diHelper
            .AddConfirmAuthHandler()
            .AddCookieAuthHandler()
            .AddCultureMiddleware()
            .AddIpSecurityFilter()
            .AddPaymentFilter()
            .AddProductSecurityFilter()
            .AddTenantStatusFilter();

            diHelper.AddNLogManager("ASC.Api", "ASC.Web");

            diHelper
            .AddAuthenticationController()
            .AddModulesController()
            .AddPortalController()
            .AddSettingsController()
            .AddSmtpSettingsController();

            services.AddAutofac(Configuration, HostEnvironment.ContentRootPath);
        }