@@ -11,6 +11,9 @@ namespace PowCapServer;
11
11
12
12
public class DefaultCaptchaStore : ICaptchaStore
13
13
{
14
+ public const string ChallengeTokenCachePrefix = "Captcha:ChallengeToken:" ;
15
+ public const string CaptchaTokenCachePrefix = "Captcha:CaptchaToken:" ;
16
+
14
17
private readonly IDistributedCache _distributedCache ;
15
18
16
19
public DefaultCaptchaStore ( IDistributedCache distributedCache )
@@ -37,16 +40,16 @@ public virtual async Task SaveChallengeTokenInfoAsync(ChallengeTokenInfo challen
37
40
38
41
var options = new DistributedCacheEntryOptions
39
42
{
40
- AbsoluteExpirationRelativeToNow = TimeSpan . FromMilliseconds ( challengeTokenInfo . Expires )
43
+ AbsoluteExpiration = DateTimeOffset . FromUnixTimeMilliseconds ( challengeTokenInfo . Expires )
41
44
} ;
42
45
using var stream = new MemoryStream ( ) ;
43
46
await JsonSerializer . SerializeAsync ( stream , challengeTokenInfo , cancellationToken : cancellationToken ) . ConfigureAwait ( false ) ;
44
- await _distributedCache . SetAsync ( challengeTokenInfo . Token , stream . ToArray ( ) , options , cancellationToken ) . ConfigureAwait ( false ) ;
47
+ await _distributedCache . SetAsync ( $ " { ChallengeTokenCachePrefix } { challengeTokenInfo . Token } " , stream . ToArray ( ) , options , cancellationToken ) . ConfigureAwait ( false ) ;
45
48
}
46
49
47
50
public virtual async Task < ChallengeTokenInfo ? > GetChallengeTokenInfoAsync ( string challengeToken , CancellationToken cancellationToken = default )
48
51
{
49
- var value = await _distributedCache . GetAsync ( challengeToken , cancellationToken ) . ConfigureAwait ( false ) ;
52
+ var value = await _distributedCache . GetAsync ( $ " { ChallengeTokenCachePrefix } { challengeToken } " , cancellationToken ) . ConfigureAwait ( false ) ;
50
53
if ( value == null )
51
54
{
52
55
return null ;
@@ -62,7 +65,7 @@ public virtual async Task DeleteChallengeTokenInfoAsync(ChallengeTokenInfo chall
62
65
throw new ArgumentNullException ( nameof ( challengeTokenInfo ) ) ;
63
66
}
64
67
65
- await _distributedCache . RemoveAsync ( challengeTokenInfo . Token , cancellationToken ) . ConfigureAwait ( false ) ;
68
+ await _distributedCache . RemoveAsync ( $ " { ChallengeTokenCachePrefix } { challengeTokenInfo . Token } " , cancellationToken ) . ConfigureAwait ( false ) ;
66
69
}
67
70
68
71
public virtual async Task SaveCaptchaTokenInfoAsync ( CaptchaTokenInfo captchaTokenInfo , CancellationToken cancellationToken = default )
@@ -74,17 +77,17 @@ public virtual async Task SaveCaptchaTokenInfoAsync(CaptchaTokenInfo captchaToke
74
77
75
78
var options = new DistributedCacheEntryOptions
76
79
{
77
- AbsoluteExpirationRelativeToNow = TimeSpan . FromMilliseconds ( captchaTokenInfo . Expires )
80
+ AbsoluteExpiration = DateTimeOffset . FromUnixTimeMilliseconds ( captchaTokenInfo . Expires )
78
81
} ;
79
82
80
83
using var stream = new MemoryStream ( ) ;
81
84
await JsonSerializer . SerializeAsync ( stream , captchaTokenInfo , cancellationToken : cancellationToken ) . ConfigureAwait ( false ) ;
82
- await _distributedCache . SetAsync ( captchaTokenInfo . Token , stream . ToArray ( ) , options , cancellationToken ) . ConfigureAwait ( false ) ;
85
+ await _distributedCache . SetAsync ( $ " { CaptchaTokenCachePrefix } { captchaTokenInfo . Token } " , stream . ToArray ( ) , options , cancellationToken ) . ConfigureAwait ( false ) ;
83
86
}
84
87
85
88
public virtual async Task < CaptchaTokenInfo ? > GetCaptchaTokenInfoAsync ( string captchaToken , CancellationToken cancellationToken = default )
86
89
{
87
- var value = await _distributedCache . GetAsync ( captchaToken , cancellationToken ) . ConfigureAwait ( false ) ;
90
+ var value = await _distributedCache . GetAsync ( $ " { CaptchaTokenCachePrefix } { captchaToken } " , cancellationToken ) . ConfigureAwait ( false ) ;
88
91
if ( value == null )
89
92
{
90
93
return null ;
@@ -100,6 +103,6 @@ public virtual async Task DeleteCaptchaTokenInfoAsync(CaptchaTokenInfo captchaTo
100
103
throw new ArgumentNullException ( nameof ( captchaTokenInfo ) ) ;
101
104
}
102
105
103
- await _distributedCache . RemoveAsync ( captchaTokenInfo . Token , cancellationToken ) . ConfigureAwait ( false ) ;
106
+ await _distributedCache . RemoveAsync ( $ " { CaptchaTokenCachePrefix } { captchaTokenInfo . Token } " , cancellationToken ) . ConfigureAwait ( false ) ;
104
107
}
105
108
}
0 commit comments