C# Asp标识2-更改移动令牌的到期时间
我有以下代码确保电子邮件验证令牌的令牌生存期在14天后过期:-C# Asp标识2-更改移动令牌的到期时间,c#,asp.net,asp.net-identity,token,C#,Asp.net,Asp.net Identity,Token,我有以下代码确保电子邮件验证令牌的令牌生存期在14天后过期:- if (Startup.DataProtectionProvider != null) { IDataProtector dataProtector = Startup.DataProtectionProvider.Create("ASP.NET Identity"); this.UserTokenProvider = new DataProt
if (Startup.DataProtectionProvider != null)
{
IDataProtector dataProtector = Startup.DataProtectionProvider.Create("ASP.NET Identity");
this.UserTokenProvider = new DataProtectorTokenProvider<IdentityUser, Guid>(dataProtector)
{
TokenLifespan = TimeSpan.FromDays(14)
};
}
if(Startup.DataProtectionProvider!=null)
{
IDataProtector dataProtector=Startup.DataProtectionProvider.Create(“ASP.NET标识”);
this.UserTokenProvider=新的DataProtectorTokenProvider(dataProtector)
{
令牌寿命=时间跨度。从天(14)
};
}
在我的应用程序的另一个区域中,我通过调用ASP.Identity ApplicationUserManager的GenerateChangePhoneNumberTokenAsync(用户标识,电话号码)方法来使用手机号码令牌
问题是移动代币在15分钟后到期
如何更改移动令牌的生存期?您需要覆盖
Microsoft.AspNet.Identity.UserManager.GenerateChangePhoneNumberTokenAsync
要这样做,请看一看并
如何首先扩展UserManager
在GenerateChangePhoneNumberTokenAsync中,您需要使用一个自定义Rfc6238AuthenticationService,该服务使用timeStep参数调用GenerateCode
GenerateChangePhoneNumberTokenAsync将如下所示
public class ApplicationUserManager : UserManager<YourIdentityUser, int>
{
public ApplicationUserManager(IUserSecurityStampStore<YourIdentityUser, Guid> store)
: base(store)
{
}
// *** some other code
public override async Task<string> GenerateChangePhoneNumberTokenAsync(Guid userId, string phoneNumber)
{
var user = await FindByIdAsync(userId);
var code = CustomRfc6238AuthenticationService.GenerateCode(user.SecurityStamp, phoneNumber, "optional modifier", TimeSpan.FromDays(14));
return code;
}
}
公共类应用程序管理员:用户管理员
{
公共应用程序服务器管理器(IUserSecurityStampStore存储)
:基地(商店)
{
}
//***其他一些代码
公共重写异步任务GenerateChangePhoneNumberTokenAsync(Guid用户ID,字符串phoneNumber)
{
var user=wait FindByIdAsync(userId);
var code=CustomRfc6238AuthenticationService.GenerateCode(user.SecurityStamp,phoneNumber,“可选修饰符”,TimeSpan.FromDays(14));
返回码;
}
}
可以找到定制Rfc6238AuthenticationService的示例实现,您需要覆盖它
Microsoft.AspNet.Identity.UserManager.GenerateChangePhoneNumberTokenAsync
要这样做,请看一看并
如何首先扩展UserManager
在GenerateChangePhoneNumberTokenAsync中,您需要使用一个自定义Rfc6238AuthenticationService,该服务使用timeStep参数调用GenerateCode
GenerateChangePhoneNumberTokenAsync将如下所示
public class ApplicationUserManager : UserManager<YourIdentityUser, int>
{
public ApplicationUserManager(IUserSecurityStampStore<YourIdentityUser, Guid> store)
: base(store)
{
}
// *** some other code
public override async Task<string> GenerateChangePhoneNumberTokenAsync(Guid userId, string phoneNumber)
{
var user = await FindByIdAsync(userId);
var code = CustomRfc6238AuthenticationService.GenerateCode(user.SecurityStamp, phoneNumber, "optional modifier", TimeSpan.FromDays(14));
return code;
}
}
公共类应用程序管理员:用户管理员
{
公共应用程序服务器管理器(IUserSecurityStampStore存储)
:基地(商店)
{
}
//***其他一些代码
公共重写异步任务GenerateChangePhoneNumberTokenAsync(Guid用户ID,字符串phoneNumber)
{
var user=wait FindByIdAsync(userId);
var code=CustomRfc6238AuthenticationService.GenerateCode(user.SecurityStamp,phoneNumber,“可选修饰符”,TimeSpan.FromDays(14));
返回码;
}
}
可以找到自定义Rfc6238AuthenticationService的示例实现如果您不想覆盖
UserManager
类,您可以在创建后随时获取令牌并手动调整到期日期。例如,我们在电子邮件发送逻辑中执行此操作(如果重新发送电子邮件,请始终刷新令牌24小时):
如果您不想覆盖UserManager
类,您可以在创建令牌后随时获取该令牌,并手动调整ExpirationDate
。例如,我们在电子邮件发送逻辑中执行此操作(如果重新发送电子邮件,请始终刷新令牌24小时):