C# 如何设置UserTokenProvider令牌到期

C# 如何设置UserTokenProvider令牌到期,c#,asp.net,asp.net-mvc,asp.net-identity,C#,Asp.net,Asp.net Mvc,Asp.net Identity,我们正在开发一个新的ASP.NET MVC 4.1应用程序。我们正在连接ASP.NET身份信息,我们正在为密码重置和新邀请的令牌而挣扎。我似乎找不到一种方法来设置生成的令牌的过期时间,而它似乎默认设置为10分钟左右。我们使用EmailTokenProvider作为用户令牌提供者,因为它似乎与用户上的安全戳配合得很好 我们如何设置令牌的过期时间?理想情况下,我们希望对invite和reset password令牌进行不同的设置 我们的用户管理器如下所示: var manager = new Use

我们正在开发一个新的ASP.NET MVC 4.1应用程序。我们正在连接ASP.NET身份信息,我们正在为密码重置和新邀请的令牌而挣扎。我似乎找不到一种方法来设置生成的令牌的过期时间,而它似乎默认设置为10分钟左右。我们使用
EmailTokenProvider
作为用户令牌提供者,因为它似乎与用户上的安全戳配合得很好

我们如何设置令牌的过期时间?理想情况下,我们希望对invite和reset password令牌进行不同的设置

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

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-manager=newusermanager(newuserstore(newuserrepository());
manager.UserValidator=newuservalidator(manager){AllowOnlyAlphanumericUserNames=false,RequireUniqueEmail=true};
manager.UserTokenProvider=新的EmailTokenProvider();
当用户请求重置密码链接时,我们调用

var-token=await\u userManager.GeneratePasswordResetTokenAsync(user.Id)
获取令牌,并将其传递给用户

当用户被邀请时,我们会调用:

var-token=wait\u userManager.GenerateUserTokenAsync(“FirstLogin”,user.Id)


获取代币并发送。

如果我理解您的问题,以下内容可能会有所帮助:

    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
            }
DateTime time=DateTime.FromBinary(BitConverter.ToInt64(数据,0));
int id=BitConverter.ToInt32(数据,8);
if(time
2.0中的令牌提供程序的默认实现不允许您更改令牌过期时间,这是我们正在考虑的identity 3.0。

感谢您的更新。我发现使用
DataProtectorTokenProvider
是一个更好的选择,因为令牌的寿命更长。这是毫无价值的,甚至没有任何关于此任意到期时间的文档。@郝功,你能分享一下默认的重置密码令牌到期时间吗?1天,请参阅