我正在使用以下程序生成令牌,基于时间(当前时间)。它工作正常,这意味着令牌将被生成。
         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;
                }