【发布时间】:2017-05-06 10:14:33
【问题描述】:
这与how to generate a unique token which expires after 24 hours?直接相关
我试图做的是嵌入以下内容:
- 页码(0 到 6)
- UTC 格式的当前日期/时间戳
- 和唯一的 GUID
我目前的代码是这样的:
private string GenerateToken(Int32 pageNumber)
{
byte[] currentTimeStamp = BitConverter.GetBytes(DateTime.UtcNow.ToBinary());
byte[] key = Guid.NewGuid().ToByteArray();
byte[] newPageNumber = BitConverter.GetBytes(pageNumber);
string token = Convert.ToBase64String(newPageNumber.Concat(currentTimeStamp).Concat(key).ToArray());
return token;
}
private tokenClass TokenAuthenticates(string token)
{
byte[] data = Convert.FromBase64String(token);
tokenClass _token = new tokenClass()
{
PageNumber = 0,
TokenDateTimeStamp = DateTime.FromBinary(BitConverter.ToInt64(data, 1)),
TokenKey = new Guid(),
Validates = (DateTime.FromBinary(BitConverter.ToInt64(data, 1)) < DateTime.UtcNow.AddHours(-2))
};
return _token;
}
decoder中的page和Guid参数还没搞清楚,基本都是假的。
我需要做什么才能完成这项工作?
【问题讨论】:
-
什么不起作用?
-
首先...我需要能够从 Base64String 中提取页码,但我不知道该怎么做。此外,guid 的日期显示为 1594 而不是 2016,与页码相同,验证仅取决于有效日期
-
我实际上没有...我正在尝试修改引用的示例 SO 页面,不幸的是我完全没有运气。
标签: c#