我正在开发ASP.NET MVC WEB API服务。随处可见我需要安全令牌。我有一个想法,使用dtabase信息生成guid。对于isntance我需要从db获取实体,然后在这个信息中使用id,datecreated和crete guid。它将是将被发送给客户的令牌。所以他可以访问他的数据。
问题是我不知道如何生成它。请告诉我一些让它有效的建议。
我找到了有趣的文章http://www.singular.co.nz/blog/archive/2007/12/20/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp.aspx来缩短GUID。
任何帮助将不胜感激, 迪马。
答案 0 :(得分:1)
我只会在每个实体中存储AccessKey uniqueidentifier not null unique
。你可以把它交给客户。这样你就不需要加密加密或散列。
请确保不使用Guid.NewGuid()
,因为它不具有加密功能。使用此:
public static class SecureGuidGenerator
{
[ThreadStatic]
static RandomNumberGenerator rng;
public static Guid GetNext()
{
if (rng == null) rng = RandomNumberGenerator.Create();
var bytes = new byte[16];
rng.GetBytes(bytes);
return new Guid(bytes);
}
}