/// <summary> /// 添加 JWT 授权 /// </summary> /// <param name="services"></param> /// <returns></returns> public static IServiceCollection AddJWTAuthorization(this IServiceCollection services) { // 注册 JWT 配置 services.AddConfigurableOptions <JWTSettingsOptions>(); // 添加默认授权 services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(options => { options.TokenValidationParameters = JWTEncryption.CreateTokenValidationParameters(App.GetOptions <JWTSettingsOptions>()); }); return(services); }
/// <summary> /// 添加 JWT 授权 /// </summary> /// <param name="services"></param> /// <param name="configureOptions">授权配置</param> /// <param name="tokenValidationParameters">token 验证参数</param> /// <returns></returns> public static AuthenticationBuilder AddJwt(this IServiceCollection services, Action <AuthenticationOptions> configureOptions = null, object tokenValidationParameters = default) { // 配置 JWT 选项 ConfigureJWTOptions(services); var jwtSettings = services.BuildServiceProvider().GetService <IOptions <JWTSettingsOptions> >().Value; // 添加默认授权 return(services.AddAuthentication(options => { if (configureOptions == null) { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; } else { configureOptions.Invoke(options); } }).AddJwtBearer(options => { options.TokenValidationParameters = (tokenValidationParameters as TokenValidationParameters) ?? JWTEncryption.CreateTokenValidationParameters(jwtSettings); })); }
/// <summary> /// 添加 JWT 授权 /// </summary> /// <param name="authenticationBuilder"></param> /// <param name="tokenValidationParameters">token 验证参数</param> /// <param name="enableGlobalAuthorize">启动全局授权</param> /// <returns></returns> public static AuthenticationBuilder AddJwt(this AuthenticationBuilder authenticationBuilder, object tokenValidationParameters = default, bool enableGlobalAuthorize = false) { var services = authenticationBuilder.Services; // 配置 JWT 选项 ConfigureJWTOptions(services); var jwtSettings = services.BuildServiceProvider().GetService <IOptions <JWTSettingsOptions> >().Value; authenticationBuilder.AddJwtBearer(options => { options.TokenValidationParameters = (tokenValidationParameters as TokenValidationParameters) ?? JWTEncryption.CreateTokenValidationParameters(jwtSettings); }); //启用全局授权 if (enableGlobalAuthorize) { services.Configure <MvcOptions>(options => { options.Filters.Add(new AuthorizeFilter()); }); } return(authenticationBuilder); }
/// <summary> /// 添加 JWT 授权 /// </summary> /// <param name="authenticationBuilder"></param> /// <param name="tokenValidationParameters">token 验证参数</param> /// <param name="jwtBearerConfigure"></param> /// <param name="enableGlobalAuthorize">启动全局授权</param> /// <returns></returns> public static AuthenticationBuilder AddJwt(this AuthenticationBuilder authenticationBuilder, object tokenValidationParameters = default, Action <JwtBearerOptions> jwtBearerConfigure = null, bool enableGlobalAuthorize = false) { // 获取框架上下文 _ = JWTEncryption.GetFrameworkContext(Assembly.GetCallingAssembly()); // 配置 JWT 选项 ConfigureJWTOptions(authenticationBuilder.Services); // 添加授权 authenticationBuilder.AddJwtBearer(options => { // 反射获取全局配置 var jwtSettings = JWTEncryption.FrameworkApp.GetMethod("GetOptions").MakeGenericMethod(typeof(JWTSettingsOptions)).Invoke(null, new object[] { null }) as JWTSettingsOptions; // 配置 JWT 验证信息 options.TokenValidationParameters = (tokenValidationParameters as TokenValidationParameters) ?? JWTEncryption.CreateTokenValidationParameters(jwtSettings); // 添加自定义配置 jwtBearerConfigure?.Invoke(options); }); //启用全局授权 if (enableGlobalAuthorize) { authenticationBuilder.Services.Configure <MvcOptions>(options => { options.Filters.Add(new AuthorizeFilter()); }); } return(authenticationBuilder); }
/// <summary> /// 添加 JWT 授权 /// </summary> /// <param name="authenticationBuilder"></param> /// <param name="tokenValidationParameters">token 验证参数</param> /// <returns></returns> public static AuthenticationBuilder AddJwt(this AuthenticationBuilder authenticationBuilder, object tokenValidationParameters = default) { var services = authenticationBuilder.Services; // 配置 JWT 选项 ConfigureJWTOptions(services); var jwtSettings = services.BuildServiceProvider().GetService <IOptions <JWTSettingsOptions> >().Value; authenticationBuilder.AddJwtBearer(options => { options.TokenValidationParameters = (tokenValidationParameters as TokenValidationParameters) ?? JWTEncryption.CreateTokenValidationParameters(jwtSettings); }); return(authenticationBuilder); }
/// <summary> /// 添加 JWT 授权 /// </summary> /// <param name="authenticationBuilder"></param> /// <param name="tokenValidationParameters">token 验证参数</param> /// <param name="jwtBearerConfigure"></param> /// <param name="enableGlobalAuthorize">启动全局授权</param> /// <returns></returns> public static AuthenticationBuilder AddJwt(this AuthenticationBuilder authenticationBuilder, object tokenValidationParameters = default, Action <JwtBearerOptions> jwtBearerConfigure = null, bool enableGlobalAuthorize = false) { var services = authenticationBuilder.Services; // 配置 JWT 选项 ConfigureJWTOptions(services); // 获取配置选项 var jwtSettings = App.GetDefultOptions <JWTSettingsOptions>(); // 添加授权 authenticationBuilder.AddJwtBearer(options => { options.TokenValidationParameters = (tokenValidationParameters as TokenValidationParameters) ?? JWTEncryption.CreateTokenValidationParameters(jwtSettings); // 添加自定义配置 jwtBearerConfigure?.Invoke(options); }); //启用全局授权 if (enableGlobalAuthorize) { services.Configure <MvcOptions>(options => { options.Filters.Add(new AuthorizeFilter()); }); } return(authenticationBuilder); }