使用标识在 .net 核心应用程序中强制使用 2FA



我已经使用此处的指南在我的 .net core mvc 应用程序中设置了 2 因素身份验证 这一切都工作正常,但它依赖于用户进入他们的帐户并设置 2FA。有什么方法可以强制用户这样做,以便所有用户都必须使用2FA?

我有点晚了。但执行此操作的方法是创建自定义控制器并重写 OnActionExecute 方法。

public class CustomController : Controller
{
public readonly DataContext _db;
public CustomController(DataContext context)
{
_db = context;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (User.Identity.IsAuthenticated)
{

var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
UserModel user = _db.UserModel.Find(userId);
if (user.TwoFactorEnabled==false && ControllerContext.ActionDescriptor.ActionName != "TwoFactor")
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Home", action = "TwoFactor" }));
return;
}              
}
base.OnActionExecuting(filterContext);
}
}

一种方法是在登录期间检查用户是否通过以下方式设置了 2FA:

var user = await _userManager.FindByEmailAsync(Input.Email);
var twoFactorEnabled = user.TwoFactorEnabled;

如果为 false,则可以重定向用户配置2FA页面(./Manage/TwoFactorAuthentication(,在用户设置2FA并启用2FA后,AspNetUsers表中的TwoFactorEnabled将被True,然后在登录过程中,如果当前用户的TwoFactorEnabled值为true,身份将自动将用户重定向到./LoginWith2fa页面进行2FA登录。

相关内容

  • 没有找到相关文章

最新更新