public void should_decode_encoded_url_query_string() { var emailToken = new UserEmailToken { UserId = 35, Token = StringUtility.Random(32) }; var encoded = emailToken.EncodeAsQueryString(); var extracted = UserEmailToken.ExtractFromQueryString(encoded); Assert.Equal(35, extracted.UserId); Assert.Equal(emailToken.Token, extracted.Token); }
public void should_encode_as_url_query_string() { var emailToken = new UserEmailToken { UserId = 35, Token = StringUtility.Random(32) }; var encoded = emailToken.EncodeAsQueryString(); var queryString = Encoding.ASCII.GetString(Convert.FromBase64String(encoded)); var query = QueryHelpers.ParseQuery(queryString); Assert.Equal("35", query["userid"]); Assert.Equal(emailToken.Token, query["token"]); }
public async Task SendEmailRetrievePasswordAsync(User user, string urlProtocol) { var token = await _userManager.GeneratePasswordResetTokenAsync(user); var model = new UserEmailToken { UserId = user.Id, Token = token }; // ReSharper disable Mvc.ActionNotResolved // ReSharper disable Mvc.ControllerNotResolved var resetUrl = _urlHelper.Action( "ResetPassword", "Account", new { token = model.EncodeAsQueryString() }, protocol: urlProtocol); var emailBody = _resetPasswordEmailBuilder.BuildEmailBody(user.DisplayName, resetUrl); await _emailDeliveryMethod.SendEmailAsync(user.EmailAddress, "dotnet club 用户密码重置", emailBody); }
public async Task SendEmailConfirmationMailAsync(User user, string urlProtocol) { if (user.EmailAddressConfirmed) { throw new UserEmailAlreadyConfirmedException(user.UserName); } var tokenString = await _userManager.GenerateEmailConfirmationTokenAsync(user); var tokenInEmail = new UserEmailToken { UserId = user.Id, Token = tokenString }; // ReSharper disable Mvc.ActionNotResolved // ReSharper disable Mvc.ControllerNotResolved var callbackUrl = _urlHelper.Action( "ConfirmEmail", "User", new { token = tokenInEmail.EncodeAsQueryString() }, protocol: urlProtocol); var emailBody = _confirmationEmailBuilder.BuildEmailBody(user.DisplayName, callbackUrl); await _emailDeliveryMethod.SendEmailAsync(user.EmailAddress, "dotnet club 用户邮件地址确认", emailBody); }