@@ -7,7 +7,7 @@ namespace Bing.Permissions.Identity.JwtBearer.Internal
77 /// <summary>
88 /// Jwt令牌存储器
99 /// </summary>
10- internal sealed class JsonWebTokenStore : IJsonWebTokenStore
10+ internal sealed class JsonWebTokenStore : JsonWebTokenStoreBase , IJsonWebTokenStore
1111 {
1212 /// <summary>
1313 /// 缓存
@@ -20,112 +20,16 @@ internal sealed class JsonWebTokenStore : IJsonWebTokenStore
2020 /// <param name="cache">缓存</param>
2121 public JsonWebTokenStore ( ICache cache ) => _cache = cache ;
2222
23- /// <summary>
24- /// 获取刷新令牌
25- /// </summary>
26- /// <param name="token">刷新令牌</param>
27- public async Task < RefreshToken > GetRefreshTokenAsync ( string token ) =>
28- await _cache . GetAsync < RefreshToken > ( GetRefreshTokenKey ( token ) ) ;
29-
30- /// <summary>
31- /// 保存刷新令牌
32- /// </summary>
33- /// <param name="token">刷新令牌</param>
34- public async Task SaveRefreshTokenAsync ( RefreshToken token ) => await _cache . AddAsync ( GetRefreshTokenKey ( token . Value ) , token , token . EndUtcTime . Subtract ( DateTime . UtcNow ) ) ;
35-
36- /// <summary>
37- /// 移除刷新令牌
38- /// </summary>
39- /// <param name="token">刷新令牌</param>
40- public async Task RemoveRefreshTokenAsync ( string token )
41- {
42- if ( ! await _cache . ExistsAsync ( GetRefreshTokenKey ( token ) ) )
43- return ;
44- await _cache . RemoveAsync ( GetRefreshTokenKey ( token ) ) ;
45- if ( ! await _cache . ExistsAsync ( GetBindRefreshTokenKey ( token ) ) )
46- return ;
47- var accessToken = await _cache . GetAsync < JsonWebToken > ( GetBindRefreshTokenKey ( token ) ) ;
48- await _cache . RemoveAsync ( GetBindRefreshTokenKey ( token ) ) ;
49- await RemoveTokenAsync ( accessToken . AccessToken ) ;
50- }
51-
52- /// <summary>
53- /// 获取访问令牌
54- /// </summary>
55- /// <param name="token">访问令牌</param>
56- public async Task < JsonWebToken > GetTokenAsync ( string token ) => await _cache . GetAsync < JsonWebToken > ( GetTokenKey ( token ) ) ;
23+ /// <inheritdoc />
24+ protected override async Task AddAsync < T > ( string key , T value , TimeSpan ? expiration = null ) => await _cache . AddAsync ( key , value , expiration ) ;
5725
58- /// <summary>
59- /// 移除访问令牌
60- /// </summary>
61- /// <param name="token">访问令牌</param>
62- public async Task RemoveTokenAsync ( string token )
63- {
64- if ( ! await _cache . ExistsAsync ( GetTokenKey ( token ) ) )
65- return ;
66- await _cache . RemoveAsync ( GetTokenKey ( token ) ) ;
67- }
26+ /// <inheritdoc />
27+ protected override async Task RemoveAsync ( string key ) => await _cache . RemoveAsync ( key ) ;
6828
69- /// <summary>
70- /// 保存访问令牌
71- /// </summary>
72- /// <param name="token">令牌</param>
73- /// <param name="expires">过期时间</param>
74- public async Task SaveTokenAsync ( JsonWebToken token , DateTime expires )
75- {
76- await _cache . AddAsync ( GetTokenKey ( token . AccessToken ) , token , expires . Subtract ( DateTime . UtcNow ) ) ;
77- await _cache . AddAsync ( GetBindRefreshTokenKey ( token . RefreshToken ) , token , expires . Subtract ( DateTime . UtcNow ) ) ;
78- }
79-
80- /// <summary>
81- /// 是否存在访问令牌
82- /// </summary>
83- /// <param name="token">访问令牌</param>
84- public async Task < bool > ExistsTokenAsync ( string token ) => await _cache . ExistsAsync ( GetTokenKey ( token ) ) ;
29+ /// <inheritdoc />
30+ protected override async Task < bool > ExistsAsync ( string key ) => await _cache . ExistsAsync ( key ) ;
8531
86- /// <summary>
87- /// 绑定用户设备令牌
88- /// </summary>
89- /// <param name="userId">用户标识</param>
90- /// <param name="clientType">客户端类型</param>
91- /// <param name="info">设备信息</param>
92- /// <param name="expires">过期时间</param>
93- public async Task BindUserDeviceTokenAsync ( string userId , string clientType , DeviceTokenBindInfo info ,
94- DateTime expires ) => await _cache . AddAsync ( GetBindUserDeviceTokenKey ( userId , clientType ) , info ,
95- expires . Subtract ( DateTime . UtcNow ) ) ;
96-
97- /// <summary>
98- /// 获取用户设备令牌
99- /// </summary>
100- /// <param name="userId">用户标识</param>
101- /// <param name="clientType">客户端类型</param>
102- public async Task < DeviceTokenBindInfo > GetUserDeviceTokenAsync ( string userId , string clientType ) =>
103- await _cache . GetAsync < DeviceTokenBindInfo > ( GetBindUserDeviceTokenKey ( userId , clientType ) ) ;
104-
105- /// <summary>
106- /// 获取刷新令牌缓存键
107- /// </summary>
108- /// <param name="token">刷新令牌</param>
109- private static string GetRefreshTokenKey ( string token ) => $ "jwt:token:refresh:{ token } ";
110-
111- /// <summary>
112- /// 获取访问令牌缓存键
113- /// </summary>
114- /// <param name="token">访问令牌</param>
115- private static string GetTokenKey ( string token ) => $ "jwt:token:access:{ token } ";
116-
117- /// <summary>
118- /// 获取绑定刷新令牌缓存键
119- /// </summary>
120- /// <param name="token">刷新令牌</param>
121- private static string GetBindRefreshTokenKey ( string token ) => $ "jwt:token:bind:{ token } ";
122-
123- /// <summary>
124- /// 获取绑定用户设备令牌缓存键
125- /// </summary>
126- /// <param name="userId">用户标识</param>
127- /// <param name="clientType">客户端类型</param>
128- private static string GetBindUserDeviceTokenKey ( string userId , string clientType ) =>
129- $ "jwt:token:bind_user:{ userId } :{ clientType } ";
32+ /// <inheritdoc />
33+ protected override async Task < T > GetAsync < T > ( string key ) => await _cache . GetAsync < T > ( key ) ;
13034 }
13135}
0 commit comments