GenerateRecoveryCodes()
{
var user = await _userManager.GetUserAsync(User);
@@ -449,11 +484,11 @@ namespace Company.WebApplication1.Controllers
}
var recoveryCodes = await _userManager.GenerateNewTwoFactorRecoveryCodesAsync(user, 10);
- var model = new GenerateRecoveryCodesViewModel { RecoveryCodes = recoveryCodes.ToArray() };
-
_logger.LogInformation("User with ID {UserId} has generated new 2FA recovery codes.", user.Id);
- return View(model);
+ var model = new ShowRecoveryCodesViewModel { RecoveryCodes = recoveryCodes.ToArray() };
+
+ return View(nameof(ShowRecoveryCodes), model);
}
#region Helpers
@@ -486,7 +521,7 @@ namespace Company.WebApplication1.Controllers
private string GenerateQrCodeUri(string email, string unformattedKey)
{
return string.Format(
- AuthenicatorUriFormat,
+ AuthenticatorUriFormat,
_urlEncoder.Encode("Company.WebApplication1"),
_urlEncoder.Encode(email),
unformattedKey);
diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Models/ManageViewModels/GenerateRecoveryCodesViewModel.cs b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Models/ManageViewModels/ShowRecoveryCodesViewModel.cs
similarity index 85%
rename from src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Models/ManageViewModels/GenerateRecoveryCodesViewModel.cs
rename to src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Models/ManageViewModels/ShowRecoveryCodesViewModel.cs
index 05f1fe8a70..d026507079 100644
--- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Models/ManageViewModels/GenerateRecoveryCodesViewModel.cs
+++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Models/ManageViewModels/ShowRecoveryCodesViewModel.cs
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Company.WebApplication1.Models.ManageViewModels
{
- public class GenerateRecoveryCodesViewModel
+ public class ShowRecoveryCodesViewModel
{
public string[] RecoveryCodes { get; set; }
}
diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Account/AccessDenied.cshtml b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Account/AccessDenied.cshtml
index 3a5a00852c..c27d3daeb3 100644
--- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Account/AccessDenied.cshtml
+++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Account/AccessDenied.cshtml
@@ -3,6 +3,6 @@
}
diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Manage/GenerateRecoveryCodes.cshtml b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Manage/GenerateRecoveryCodes.cshtml
index 669d13ef93..996967b3a2 100644
--- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Manage/GenerateRecoveryCodes.cshtml
+++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Manage/GenerateRecoveryCodes.cshtml
@@ -1,24 +1,26 @@
-@model GenerateRecoveryCodesViewModel
-@{
- ViewData["Title"] = "Recovery codes";
+@{
+ ViewData["Title"] = "Generate two-factor authentication (2FA) recovery codes";
ViewData.AddActivePage(ManageNavPages.TwoFactorAuthentication);
}
-@ViewData["Title"]
+@ViewData["Title"]
+
- Put these codes in a safe place.
+ This action generates new recovery codes.
If you lose your device and don't have the recovery codes you will lose access to your account.
+
+ Generating new recovery codes does not change the keys used in authenticator apps. If you wish to change the key
+ used in an authenticator app you should reset your authenticator keys.
+
+
+
+
+
-
-
- @for (var row = 0; row < Model.RecoveryCodes.Count(); row += 2)
- {
- @Model.RecoveryCodes[row] @Model.RecoveryCodes[row + 1]
- }
-
-
\ No newline at end of file
diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Manage/ShowRecoveryCodes.cshtml b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Manage/ShowRecoveryCodes.cshtml
new file mode 100644
index 0000000000..c2be067710
--- /dev/null
+++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Manage/ShowRecoveryCodes.cshtml
@@ -0,0 +1,24 @@
+@model ShowRecoveryCodesViewModel
+@{
+ ViewData["Title"] = "Recovery codes";
+ ViewData.AddActivePage(ManageNavPages.TwoFactorAuthentication);
+}
+
+@ViewData["Title"]
+
+
+
+ Put these codes in a safe place.
+
+
+ If you lose your device and don't have the recovery codes you will lose access to your account.
+
+
+
+
+ @for (var row = 0; row < Model.RecoveryCodes.Length; row += 2)
+ {
+ @Model.RecoveryCodes[row] @Model.RecoveryCodes[row + 1]
+ }
+
+
\ No newline at end of file
diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Manage/TwoFactorAuthentication.cshtml b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Manage/TwoFactorAuthentication.cshtml
index a2b52ac5b4..9286c0821e 100644
--- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Manage/TwoFactorAuthentication.cshtml
+++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Manage/TwoFactorAuthentication.cshtml
@@ -30,7 +30,7 @@
}
Disable 2FA
- Reset recovery codes
+ Reset recovery codes
}
Authenticator app