1- using System ;
1+ using Microsoft . IdentityModel . Tokens ;
2+ using System ;
23using System . IdentityModel . Tokens . Jwt ;
4+ using System . Runtime . Caching ;
35using System . Security . Claims ;
4- using Microsoft . IdentityModel . Tokens ;
6+ using System . Security . Cryptography ;
57
68namespace Utils
79{
810 public static class JwtManager
911 {
10- /// <summary>
11- /// Use the below code to generate symmetric Secret Key
12- /// var hmac = new HMACSHA256();
13- /// var key = Convert.ToBase64String(hmac.Key);
14- /// </summary>
15- private const string Secret = "db3OIsj+BXE9NZDy0t8W3TcNekrF+2d/1sFnWG4HnV8TZY30iTOdtVWJG8abWvB1GlOgJuQZdcF2Luqm/hccMw==" ;
12+ private static MemoryCache cache ;
1613
1714 public static string GenerateToken ( string username , int expireMinutes = 20 )
1815 {
19- var symmetricKey = Convert . FromBase64String ( Secret ) ;
16+ cache = new MemoryCache ( "CachingProvider" ) ;
17+
18+ var hmac = new HMACSHA256 ( ) ;
19+ var key = Convert . ToBase64String ( hmac . Key ) ;
20+
21+ var symmetricKey = Convert . FromBase64String ( key ) ;
2022 var tokenHandler = new JwtSecurityTokenHandler ( ) ;
2123
2224 var now = DateTime . UtcNow ;
@@ -35,11 +37,15 @@ public static string GenerateToken(string username, int expireMinutes = 20)
3537 var stoken = tokenHandler . CreateToken ( tokenDescriptor ) ;
3638 var token = tokenHandler . WriteToken ( stoken ) ;
3739
40+ cache . Add ( token , key , DateTimeOffset . MaxValue ) ;
41+
3842 return token ;
3943 }
4044
4145 public static ClaimsPrincipal GetPrincipal ( string token )
4246 {
47+ var key = cache [ token ] . ToString ( ) ;
48+
4349 try
4450 {
4551 var tokenHandler = new JwtSecurityTokenHandler ( ) ;
@@ -48,7 +54,7 @@ public static ClaimsPrincipal GetPrincipal(string token)
4854 if ( jwtToken == null )
4955 return null ;
5056
51- var symmetricKey = Convert . FromBase64String ( Secret ) ;
57+ var symmetricKey = Convert . FromBase64String ( key ) ;
5258
5359 var validationParameters = new TokenValidationParameters ( )
5460 {
0 commit comments