@@ -18,10 +18,11 @@ public static partial class TokenProviderExtensions
1818 /// <typeparam name="THttpApi">接口类型</typeparam>
1919 /// <param name="services"></param>
2020 /// <param name="tokenRequest">token请求委托</param>
21+ /// <param name="name">token提供者的别名</param>
2122 /// <returns></returns>
22- public static ITokenProviderBuilder AddTokenProvider < THttpApi > ( this IServiceCollection services , Func < IServiceProvider , Task < TokenResult ? > > tokenRequest )
23+ public static ITokenProviderBuilder AddTokenProvider < THttpApi > ( this IServiceCollection services , Func < IServiceProvider , Task < TokenResult ? > > tokenRequest , string name = "" )
2324 {
24- return services . AddTokenProvider < THttpApi , DelegateTokenProvider > ( s => new DelegateTokenProvider ( s , tokenRequest ) ) ;
25+ return services . AddTokenProvider < THttpApi , DelegateTokenProvider > ( s => new DelegateTokenProvider ( s , tokenRequest ) , name ) ;
2526 }
2627
2728 /// <summary>
@@ -31,6 +32,7 @@ public static ITokenProviderBuilder AddTokenProvider<THttpApi>(this IServiceColl
3132 /// <typeparam name="TTokenProvider">token提供者类型</typeparam>
3233 /// <param name="services"></param>
3334 /// <param name="tokenProviderFactory">token提供者创建工厂</param>
35+ /// <param name="name">token提供者的别名</param>
3436 /// <returns></returns>
3537 public static ITokenProviderBuilder AddTokenProvider <
3638#if NET5_0_OR_GREATER
@@ -40,13 +42,13 @@ public static ITokenProviderBuilder AddTokenProvider<
4042#if NET5_0_OR_GREATER
4143 [ System . Diagnostics . CodeAnalysis . DynamicallyAccessedMembers ( System . Diagnostics . CodeAnalysis . DynamicallyAccessedMemberTypes . PublicConstructors ) ]
4244#endif
43- TTokenProvider > ( this IServiceCollection services , Func < IServiceProvider , TTokenProvider > tokenProviderFactory )
45+ TTokenProvider > ( this IServiceCollection services , Func < IServiceProvider , TTokenProvider > tokenProviderFactory , string name = "" )
4446 where TTokenProvider : class , ITokenProvider
4547 {
4648 return services
4749 . RemoveAll < TTokenProvider > ( )
4850 . AddTransient ( tokenProviderFactory )
49- . AddTokenProviderCore < THttpApi , TTokenProvider > ( ) ;
51+ . AddTokenProviderCore < THttpApi , TTokenProvider > ( name ) ;
5052 }
5153
5254
@@ -56,6 +58,7 @@ public static ITokenProviderBuilder AddTokenProvider<
5658 /// <typeparam name="THttpApi">接口类型</typeparam>
5759 /// <typeparam name="TTokenProvider">token提供者类型</typeparam>
5860 /// <param name="services"></param>
61+ /// <param name="name">token提供者的别名</param>
5962 /// <returns></returns>
6063 public static ITokenProviderBuilder AddTokenProvider <
6164#if NET5_0_OR_GREATER
@@ -65,13 +68,13 @@ public static ITokenProviderBuilder AddTokenProvider<
6568#if NET5_0_OR_GREATER
6669 [ System . Diagnostics . CodeAnalysis . DynamicallyAccessedMembers ( System . Diagnostics . CodeAnalysis . DynamicallyAccessedMemberTypes . PublicConstructors ) ]
6770#endif
68- TTokenProvider > ( this IServiceCollection services )
71+ TTokenProvider > ( this IServiceCollection services , string name = "" )
6972 where TTokenProvider : class , ITokenProvider
7073 {
7174 return services
7275 . RemoveAll < TTokenProvider > ( )
7376 . AddTransient < TTokenProvider > ( )
74- . AddTokenProviderCore < THttpApi , TTokenProvider > ( ) ;
77+ . AddTokenProviderCore < THttpApi , TTokenProvider > ( name ) ;
7578 }
7679
7780
@@ -81,24 +84,25 @@ public static ITokenProviderBuilder AddTokenProvider<
8184 /// <typeparam name="THttpApi">接口类型</typeparam>
8285 /// <typeparam name="TTokenProvider">token提供者类型</typeparam>
8386 /// <param name="services"></param>
87+ /// <param name="name">token提供者的别名</param>
8488 /// <returns></returns>
85- private static ITokenProviderBuilder AddTokenProviderCore < THttpApi , TTokenProvider > ( this IServiceCollection services )
89+ private static ITokenProviderBuilder AddTokenProviderCore < THttpApi , TTokenProvider > ( this IServiceCollection services , string name )
8690 where TTokenProvider : class , ITokenProvider
8791 {
8892 services
8993 . AddOptions < TokenProviderFactoryOptions > ( )
90- . Configure ( o => o . Register < THttpApi , TTokenProvider > ( ) ) ;
94+ . Configure ( o => o . Register < THttpApi , TTokenProvider > ( name ) ) ;
9195
9296 services
9397 . AddOptions < HttpApiOptions > ( HttpApi . GetName ( typeof ( OAuth2TokenClient ) ) )
9498 . Configure ( o => o . KeyValueSerializeOptions . IgnoreNullValues = true ) ;
9599
96100 services . TryAddSingleton < OAuth2TokenClient > ( ) ;
97- services . TryAddSingleton ( typeof ( TokenProviderService < , > ) ) ;
101+ services . TryAddTransient ( typeof ( TokenProviderService < , > ) ) ;
98102 services . TryAddSingleton < ITokenProviderFactory , TokenProviderFactory > ( ) ;
99103
100- var name = TokenProviderService < THttpApi , TTokenProvider > . Name ;
101- return new TokenProviderBuilder ( name , services ) ;
104+ var providerName = TokenProviderService < THttpApi , TTokenProvider > . GetTokenProviderName ( name ) ;
105+ return new TokenProviderBuilder ( providerName , services ) ;
102106 }
103107
104108
@@ -108,7 +112,7 @@ private static ITokenProviderBuilder AddTokenProviderCore<THttpApi, TTokenProvid
108112 private class TokenProviderBuilder : ITokenProviderBuilder
109113 {
110114 /// <summary>
111- /// 获取token提供者的别名
115+ /// 获取token提供者的名称
112116 /// </summary>
113117 public string Name { get ; }
114118
@@ -120,7 +124,7 @@ private class TokenProviderBuilder : ITokenProviderBuilder
120124 /// <summary>
121125 /// token提供者创建器
122126 /// </summary>
123- /// <param name="name">token提供者的别名 </param>
127+ /// <param name="name">token提供者的名称 </param>
124128 /// <param name="services">服务描述集合</param>
125129 public TokenProviderBuilder ( string name , IServiceCollection services )
126130 {
0 commit comments