在ASP.Net Core/Blazor中,使用验证器应用程序进行身份验证的步骤如下:
步骤1:安装NuGet软件包
首先,需要安装以下三个NuGet软件包: Microsoft.AspNetCore.Authentication Microsoft.AspNetCore.Authentication.QrCodeGenerator Microsoft.AspNetCore.Authentication.Totp
可以通过以下命令,将这些包添加到项目中: Install-Package Microsoft.AspNetCore.Authentication Install-Package Microsoft.AspNetCore.Authentication.QrCodeGenerator Install-Package Microsoft.AspNetCore.Authentication.Totp
步骤2:在Startup.cs中配置身份验证
在ConfigureServices方法中,需要添加以下代码:
services.AddAuthentication() .AddTotp(o => { o.Issuer = "MyApp"; });
步骤3:更新登录页面
在登录页面中,需要添加一个“使用验证器应用程序”选项。下面是一个示例:
步骤4:添加身份验证控制器
在控制器中,需要添加以下操作,并将其标记为[Authorize]:
[Authorize] [Route("[controller]")] public class AuthController : Controller { public IActionResult Index() { return View(); }
public IActionResult Setup()
{
var user = HttpContext.User;
var email = user.FindFirstValue(ClaimTypes.Email);
var authenticatorUri = $"otpauth://totp/{Uri.EscapeDataString("MyApp")}:{Uri.EscapeDataString(email)}?secret={secret}&issuer={Uri.EscapeDataString("MyApp")}&digits=6&period=30";
var qrCodeImage = QrCodeGenerator.GenerateQrCode(authenticatorUri);
return View(new AuthSetupViewModel
{
Secret = secret,
QrCodeImage = qrCodeImage
});
}
public IActionResult Verify()
{
var user = HttpContext.User;
var code = Request.Form["code"];
var email = user.FindFirstValue(ClaimTypes.Email);
var totp = new Totp(Base