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 }; }); }
// 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 }
// 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 }
public JwtTokenGenerator(IOptions <JwtSettingsModel> jwtSettings, RoleManager <AppRole> roleManager) { _jwtSettings = jwtSettings.Value; _roleManager = roleManager; }
public LoginController(IAccountService accountService, JwtSettingsModel jwtSettings) { _accountService = accountService; _jwtSettings = jwtSettings; }