コード例 #1
0
        private void ConfigureAuth(IServiceCollection services, JwtSettingsModel claimsModel)
        {
            services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                               .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                               .RequireAuthenticatedUser().Build());
            });

            RSA publicRsa = RSA.Create();
            var publicKey = Path.Combine(claimsModel.PublicKeyFilePath, claimsModel.PublicKeyFileName);

            publicRsa.LoadPublicKey(publicKey);
            var signingKey = new RsaSecurityKey(publicRsa);

            services
            .AddAuthentication(cfg =>
            {
                cfg.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                cfg.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(cfg =>
            {
                cfg.RequireHttpsMetadata      = false;
                cfg.SaveToken                 = true;
                cfg.TokenValidationParameters = new TokenValidationParameters()
                {
                    ValidateIssuer           = false,
                    ValidateAudience         = false,
                    ValidateLifetime         = true,
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = signingKey
                };
            });
        }
コード例 #2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <AeDbContext>(options => options.UseMySql(Configuration.GetConnectionString("SQLConnection")));

            #region jwt配置
            services.Configure <JwtSettingsModel>(Configuration.GetSection("JwtSettings"));
            var jwtSettings = new JwtSettingsModel();
            Configuration.Bind("JwtSettings", jwtSettings);
            //认证middleware配置
            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            //Jwt的middleware配置
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidIssuer      = jwtSettings.Issuer,
                    ValidAudience    = jwtSettings.Audience,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.SecretKey))
                };
            });
            //检测Token有效性
            services.AddScoped <IAuthorizationHandler, ValidJtiHandler>();
            #endregion

            #region 添加MVC并添加配置
            services.AddMvc(o =>
            {
                o.Filters.Add(typeof(GlobalExceptionsFilter));//添加全局异常处理
            })
            .AddJsonOptions(options =>
            {
                options.SerializerSettings.ContractResolver = new DefaultContractResolver(); //json默认处理不会大小写变化
                options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";         //默认时间处理格式,去除T
            });
            #endregion

            #region AutoMapper(实体转换)配置
            services.AddAutoMapper();
            #endregion

            #region 配置跨域处理
            services.AddCors(options =>
            {
                options.AddPolicy("any", builder =>
                {
                    builder.AllowAnyOrigin() //允许任何来源的主机访问
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowCredentials();//指定处理cookie
                });
            });
            #endregion
        }
コード例 #3
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            #region 数据库操作仓储工作单元
            services.AddDbContext <AeDbContext>(options => options.UseMySql(Configuration.GetConnectionString("SQLConnection")));
            services.AddTransient(typeof(UnitOfWork));//注入工作单元
            #endregion

            #region 添加缓存服务注册
            services.AddMemoryCache();//添加内存缓存
            services.AddSingleton(typeof(ICacheService), typeof(MemoryCacheService));
            #endregion

            #region 通过反射注入各种服务
            //集中注册服务
            foreach (var item in ReflectionHelper.GetClassName("Ator.Service"))
            {
                foreach (var typeArray in item.Value)
                {
                    services.AddScoped(typeArray, item.Key);
                }
            }
            #endregion

            #region jwt配置
            services.Configure <JwtSettingsModel>(Configuration.GetSection("JwtSettings"));
            var jwtSettings = new JwtSettingsModel();
            Configuration.Bind("JwtSettings", jwtSettings);
            //认证middleware配置
            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            //Jwt的middleware配置
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidIssuer      = jwtSettings.Issuer,
                    ValidAudience    = jwtSettings.Audience,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.SecretKey))
                };
            });
            //检测Token有效性
            services.AddScoped <IAuthorizationHandler, ValidJtiHandler>();
            #endregion

            #region 添加MVC并添加配置
            services.AddMvc(o =>
            {
                o.Filters.Add(typeof(GlobalExceptionsFilter));//添加全局异常处理
            })
            .AddJsonOptions(options =>
            {
                options.SerializerSettings.ContractResolver = new DefaultContractResolver(); //json默认处理不会大小写变化
                options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";         //默认时间处理格式,去除T
            });
            #endregion

            #region AutoMapper(实体转换)配置
            services.AddAutoMapper();
            #endregion

            #region 配置跨域处理
            services.AddCors(options =>
            {
                options.AddPolicy("any", builder =>
                {
                    builder.AllowAnyOrigin() //允许任何来源的主机访问
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowCredentials();//指定处理cookie
                });
            });
            #endregion
        }
コード例 #4
0
 public JwtTokenGenerator(IOptions <JwtSettingsModel> jwtSettings, RoleManager <AppRole> roleManager)
 {
     _jwtSettings = jwtSettings.Value;
     _roleManager = roleManager;
 }
コード例 #5
0
 public LoginController(IAccountService accountService, JwtSettingsModel jwtSettings)
 {
     _accountService = accountService;
     _jwtSettings    = jwtSettings;
 }