我正在使用以下程序生成令牌,基于时间(当前时间)。它工作正常,这意味着令牌将被生成。
public string GenerateToken()
{
MD5 md5 = System.Security.Cryptography.MD5.Create();
DateTime input = DateTime.Now;
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input.ToString());
byte[] hash = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("X2"));
}
return sb.ToString();
}
我使用以下程序尝试在 2 分钟内锁定(过期)令牌。这意味着我访问GetToken() method
,它将返回令牌。particular Time(current Time)
我需要为该令牌设置有效时间 2 分钟。如果我访问 getToken () 前 2 分钟我需要获得相同的令牌。但我getToken()
在 2 分钟后访问我需要获得新令牌。我该怎么做?如何锁定令牌?
public string GetToken()
{
DateTime currentTime = DateTime.UtcNow;
tokenExp = DateTime.UtcNow.AddMinutes(2);
if (tokenExp >= currentTime)
{
token = GenerateToken();
return token;
}
else lock (tokenLock)
{
if (tokenExp >= currentTime)
{
token = GenerateToken();
//return token;
}
return token;
}