如何设置UserTokenProvider令牌到期

我们正在研究一个新的ASP.NET MVC 4.1应用程序。 我们正在关注ASP.NET身份,我们正在努力使用令牌来重置密码和新邀请。 我似乎无法找到一种方法来设置生成的令牌的到期时间,并且它似乎默认设置为大约10分钟。 我们使用EmailTokenProvider作为用户令牌提供程序,因为它似乎与用户的安全印记一起工作良好。

我们如何设置令牌的到期时间 - 理想情况下,我们希望为邀请对重置密码令牌进行不同的设置。

我们的用户管理器如下所示:

var manager = new UserManager<User, long>(new UserStore(new UserRepository()));
manager.UserValidator = new UserValidator<User, long>(manager) {AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true};
manager.UserTokenProvider = new EmailTokenProvider<User, long>();

当用户请求我们拨打的重置密码链接时

var token = await _userManager.GeneratePasswordResetTokenAsync(user.Id); 获取令牌,并将其传递给用户。

当用户被邀请时,我们称之为:

var token = await _userManager.GenerateUserTokenAsync("FirstLogin", user.Id);

获取令牌并发送。


2.0中的令牌提供程序的默认实现不允许您更改令牌过期,这是我们正在考虑的身份3.0的事情。


如果我很好地理解你的问题,下面可以帮助你:

    private static string CalculateToken(User user)
    {
        byte[] time = BitConverter.GetBytes(DateTime.UtcNow.ToBinary());
        byte[] key = BitConverter.GetBytes(user.ID);
        string token = Convert.ToBase64String(time.Concat(key).ToArray());
        return token;
    }

接着:

   DateTime time = DateTime.FromBinary(BitConverter.ToInt64(data, 0));
   int id = BitConverter.ToInt32(data, 8);

   if (time< DateTime.UtcNow.AddMinutes(-10) || user.ID != id)
            {
                //too old or IDs not matching
            }
链接地址: http://www.djcxy.com/p/22925.html

上一篇: How to set the UserTokenProvider token expiration

下一篇: oriented programming?