우편함에 요청을 보낼 때 (ConvertedAccessTokenCache.Contains (accessToken)) 문을 입력 할 수 없습니다. AccessTokenCache에 accessTokenCache (accessToken)가 포함되어 있는지 확인해야합니다. < - 인증 : 무기명 c2E6dGVsZWFkcmU1NSxudA == ....IMemoryCache에서 문자열로 변환 할 수 없습니까?
그러나 그것은 내가 무엇을 놓치고
어떤 아이디어 .. 그 시점을 통해 마우스를 잡고 때이 결과로 "Microsoft.Extensions.Caching.Memory.MemoryCache"를 얻을이 포함 된 경우 확인할 때?
namespace ....Security.Token
{
public class TokenManager
{
private readonly IMemoryCache AccessTokenCache;
private readonly IMemoryCache RefreshTokenCache;
private CancellationTokenSource ctsAccess;
private CancellationTokenSource ctsRefresh;
private readonly uint RefreshTokenValidTime = 60 * 60 * 10; //seconds
#if DEBUG
private readonly uint TokenExpirationTime = 60 * 60 * 2; //seconds
#else
private readonly uint TokenExpirationTime = 60 * 5; //seconds
#endif
public TokenManager()
{
AccessTokenCache = new MemoryCache(new MemoryCacheOptions());
RefreshTokenCache = new MemoryCache(new MemoryCacheOptions());
ctsAccess = new CancellationTokenSource(60 * 60 * 2);
ctsRefresh = new CancellationTokenSource(60 * 60 * 10);
}
public long ValidateToken(string accessToken)
{
var ConvertedAccessTokenCache = AccessTokenCache.ToString();
if (ConvertedAccessTokenCache.Contains(accessToken))
{
var token = (TokenResponse)AccessTokenCache.Get(accessToken);
var createdDate = GetCreatedDate(accessToken);
var validToDate = createdDate.AddSeconds(token.expires_in);
var clientId = GetClientId(accessToken);
if (validToDate > SystemTime.Now())
{
return clientId;
}
}
return -1L;
}
}
}
public UserEntity GetUser(string credentials)
{
var token = new TokenManager();
var clientId = token.ValidateToken(credentials);
if (clientId == -1)
{
return null;
}
var user = Execute(context =>
{
var command = new GetCommand<UserEntity>(c => c.UserDataAccess.GetUser(clientId));
return command.Execute(null, false, context);
});
return user;
}
그리고 'ValidateToken (...)'이라고하는 코드는 .... ??? – Tseng
편집 됨, 미안 해요. – KakaMir
그러면 앞으로 나아갈 필요가 있습니다. 'cache.GetString (...) '대신에'cache.ToString()'을 호출하는 것 같습니다. – Tseng