1010using System ;
1111using System . Collections . Generic ;
1212using System . Linq ;
13+ using System . Security . Claims ;
1314using System . Threading ;
1415using System . Threading . Tasks ;
1516
@@ -31,9 +32,11 @@ namespace OSharp.Identity
3132 /// <summary>
3233 /// 在线用户信息提供者
3334 /// </summary>
34- public class OnlineUserProvider < TUser , TUserKey , TRole , TRoleKey > : IOnlineUserProvider
35+ public class OnlineUserProvider < TUser , TUserKey , TUserClaim , TUserClaimKey , TRole , TRoleKey > : IOnlineUserProvider
3536 where TUser : UserBase < TUserKey >
3637 where TUserKey : IEquatable < TUserKey >
38+ where TUserClaim : UserClaimBase < TUserClaimKey , TUserKey >
39+ where TUserClaimKey : IEquatable < TUserClaimKey >
3740 where TRole : RoleBase < TRoleKey >
3841 where TRoleKey : IEquatable < TRoleKey >
3942 {
@@ -76,7 +79,7 @@ public virtual async Task<OnlineUser> GetOrCreate(string userName)
7679 RoleManager < TRole > roleManager = _serviceProvider . GetService < RoleManager < TRole > > ( ) ;
7780 bool isAdmin = roleManager . Roles . ToList ( ) . Any ( m => roles . Contains ( m . Name ) && m . IsAdmin ) ;
7881 RefreshToken [ ] refreshTokens = await GetRefreshTokens ( user ) ;
79- return new OnlineUser ( )
82+ OnlineUser onlineUser = new OnlineUser ( )
8083 {
8184 Id = user . Id . ToString ( ) ,
8285 UserName = user . UserName ,
@@ -87,6 +90,15 @@ public virtual async Task<OnlineUser> GetOrCreate(string userName)
8790 Roles = roles . ToArray ( ) ,
8891 RefreshTokens = refreshTokens . ToDictionary ( m => m . ClientId , m => m )
8992 } ;
93+
94+ // UserClaim都添加到扩展数据
95+ IList < Claim > claims = await userManager . GetClaimsAsync ( user ) ;
96+ foreach ( Claim claim in claims )
97+ {
98+ onlineUser . ExtendData . Add ( claim . Type , claim . Value ) ;
99+ }
100+
101+ return onlineUser ;
90102 } ,
91103 options ) ;
92104 }
0 commit comments