【发布时间】:2012-04-18 03:06:47
【问题描述】:
我使用以下程序生成令牌,基于时间(当前时间)。它工作正常,这意味着令牌将被生成。
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 分钟对于那个令牌。如果我在 2 分钟之前访问 getToken(),我需要获得相同的令牌。但是我在 2 分钟后访问 getToken(),我需要获得新的令牌。我该怎么做?如何锁定令牌?
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;
}
【问题讨论】:
标签: c# asp.net token access-token