有沒有人使用自定義令牌進行電子郵件驗證,而不必先使用websecurity.CreateAccount方法?
絕對 - 我們爲我們的所有電子郵件驗證令牌執行此操作,這是我們的「CreateAccount」流程的一部分。你可以做這樣的事情來生成令牌:
public static string GenerateEmailToken()
{
// generate an email verification token for the user
using (RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider())
{
byte[] data = new byte[16];
provider.GetBytes(data);
return Convert.ToBase64String(data);
}
}
然後我包括在我們的「CreateAccountResponse」,允許控制器把它撿起來,並與令牌發送確認電子郵件包括 - 給你一個理念:
public class CreateAccountResponse
{
public bool CreatedSuccessfully { get; set; }
public string EmailVerificationToken { get; set; }
}
然後我們處理,在這裏:
CreateAccountResponse response = _mediator.Send(createAccountCommand);
if (response.CreatedSuccessfully)
{
if (!string.IsNullOrEmpty(response.EmailVerificationToken))
{
// Send the verification email if a token is present
SendVerificationEmail(model.Email, response.EmailVerificationToken);
}
return RedirectToAction("Settings", "Account");
}
然後使用令牌,我們創建了完全格式化的URL在電子郵件中包含您發送到本用戶
private void SendVerificationEmail(string emailAddress, string token)
{
try
{
// Url.Action will encode parameters as they are needed.
var verificationUrl = Url.Action("VerifyAccount", "Account", new { token = token }, Request.Url.Scheme);
_userMailer.DeliverVerification(emailAddress, verificationUrl);
}
catch (Exception ex)
{
_logger.ErrorLog.Log(new VerificationError(ex));
}
}
一旦他們點擊電子郵件中的鏈接,我們的「VerifyAccount」路線拿起令牌,使我們能夠完成驗證過程的其餘部分。
而且,這是一個很好主意設置一個到期您的驗證令牌用於安全目的 - 24到48小時的時間一般是在可接受的時間框架,以允許用戶接收的郵件,點擊鏈接,並驗證他們的帳戶。
這是我正在尋找的澄清。非常感謝一家工廠。至少現在我知道我可以通過查看該模型在我的用戶表中存儲令牌。我所看到的例子完全忽略了我關於一些框架方法如何驗證和處理這樣的問題的更基本的問題。我認爲在這裏問這個問題的原因很可能是,我正在和另一位Java開發人員交談,有時寫邏輯邏輯並不是壞事,因爲你並不完全依賴於所有的框架方法,並且失去對我所做的事情的控制。非常感謝:) – Brian
沒問題,很高興幫助。由於這回答了您的問題,您應該將其標記爲接受答案。 – X3074861X