为电子邮件确认生成短EmailConfirmationToken [英] Generate a Short EmailConfirmationToken for Email Confirmation
问题描述
我正在尝试为我的webapp实现注册过程。我正在使用此过程生成EmailConfirmationToken并通过电子邮件将其发送给用户。
if (result.Succeeded)
{
string code = await userManager.GenerateEmailConfirmationTokenAsync(user.Id);
Uri baseUri = new Uri(OpenIdConnectAuthenticationAuthority);
Uri callbackUrl = new Uri(baseUri + / Register / ConfirmEmail /?userId = + user.Id + & code = + HttpUtility.UrlEncode(code));
await userManager.SendEmailAsync(user.Id, BIMcube电子邮件确认, 请点击以下链接确认您的帐户:< a href = \ + callbackUrl + \> link< / a>);
}
生成的令牌非常长。这是一个示例的令牌:
<预LANG = XML> AQAAANCMnd8BFdERjHoAwE / CL + sBAAAA48Afnm / pyU6UZrt2VXGfHAAAAAACAAAAAAADZgAAwAAAABAAAABa10013CpPZN7NSwTZYu03AAAAAASAAACgAAAAEAAAAHFDDmUWdvgFz4QCqe0ML / 1gAAAAN7hpoCFiW8NcTaMNCGMLALUYL0gcfXbPjXQddI5w68mm4FfbVhMkJPbL + JTA8RXZ7mb6VgNmxS / cxdMzy5BQdIdVUIWzQYPwBlX6Oimx + zESVcCSpUSVpwI05 + ls79nmFAAAAPTqCR7RSVR5zQT3UaJlcd1BokRr
我的UserTokenProvider是这样实现的:
var dataProtectionProvider = new DpapiDataProtectionProvider( IdentityServer3跨度>);
if (dataProtectionProvider!= null )
{
UserTokenProvider = new DataProtectorTokenProvider< User>(dataProtectionProvider.Create( ASP.NET Identity))
{
TokenLifespan = TimeSpan.FromHours( 3 )
} ;
}
是否有可能生成电子邮件确认的短代码?你知道我需要实现什么吗?
对于唯一令牌创建GUID
string strToken = Convert.ToBase64String(Guid.NewGuid()。ToByteArray());
或者您可以使用日期时间时间戳并生成令牌。
byte [] time = BitConverter.GetBytes(DateTime.UtcNow.ToBinary());
byte [] key = Guid.NewGuid()。ToByteArray();
string token = Convert.ToBase64String(time.Concat(key).ToArray());
I'm trying to implement a registration prozess for my webapp. I am using this process for generating a EmailConfirmationToken and sending it via email to the user.
if (result.Succeeded)
{
string code = await userManager.GenerateEmailConfirmationTokenAsync(user.Id);
Uri baseUri = new Uri(OpenIdConnectAuthenticationAuthority);
Uri callbackUrl = new Uri(baseUri + "/Register/ConfirmEmail/?userId=" + user.Id + "&code=" + HttpUtility.UrlEncode(code));
await userManager.SendEmailAsync(user.Id, "BIMcube eMail Confirmation", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>");
}
The generated token is very long. This is a example token:
AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA48Afnm/pyU6UZrt2VXGfHAAAAAACAAAAAAADZgAAwAAAABAAAABa10013CpPZN7NSwTZYu03AAAAAASAAACgAAAAEAAAAHFDDmUWdvgFz4QCqe0ML/1gAAAAN7hpoCFiW8NcTaMNCGMLALUYL0gcfXbPjXQddI5w68mm4FfbVhMkJPbL+JTA8RXZ7mb6VgNmxS/cxdMzy5BQdIdVUIWzQYPwBlX6Oimx+zESVcCSpUSVpwI05+ls79nmFAAAAPTqCR7RSVR5zQT3UaJlcd1BokRr
My UserTokenProvider is implemented like this:
var dataProtectionProvider = new DpapiDataProtectionProvider("IdentityServer3");
if (dataProtectionProvider != null)
{
UserTokenProvider = new DataProtectorTokenProvider<User>(dataProtectionProvider.Create("ASP.NET Identity"))
{
TokenLifespan = TimeSpan.FromHours(3)
};
}
Is there any possibility for generating a short code for email confirmation? Do you have an idea what I need to implement?
For unique token create GUID
string strToken = Convert.ToBase64String(Guid.NewGuid().ToByteArray());
Or you can use date time time stamp and generate token.
byte[] time = BitConverter.GetBytes(DateTime.UtcNow.ToBinary());
byte[] key = Guid.NewGuid().ToByteArray();
string token = Convert.ToBase64String(time.Concat(key).ToArray());
这篇关于为电子邮件确认生成短EmailConfirmationToken的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!