Asp.net核心强制用户确认电子邮件

时间:2017-09-07 13:42:01

标签: asp.net-core asp.net-core-webapi asp.net-core-identity

就像在标题中一样,我试图强迫用户在让他登录之前确认电子邮件。我根据Microsoft教程做了一些事情并写了我必须添加

  

o.SignIn.RequireConfirmedEmail = true;

我做了什么,但它并没有阻止我登录,即使我没有确认我的电子邮件

 services.AddIdentity<Company, IdentityRole>
      (o =>
      {
        // configure identity options
        o.Password.RequireDigit = false;
        o.Password.RequireLowercase = false;
        o.Password.RequireUppercase = false;
        o.Password.RequireNonAlphanumeric = false;
        o.Password.RequiredLength = 6;
        o.SignIn.RequireConfirmedEmail = true;
        o.Tokens.EmailConfirmationTokenProvider = EmailConfirmationTokenProviderName;
      })
      .AddEntityFrameworkStores<ShopContext>()
      .AddTokenProvider<ConfirmEmailDataProtectorTokenProvider<Company>>(EmailConfirmationTokenProviderName);

我正在使用jwt令牌身份验证我在这种情况下做的事情比我展示的更多吗?

1 个答案:

答案 0 :(得分:4)

添加检查帐户是否在Login操作

的开头确认
var user = await _userManager.FindByEmailAsync(model.Email);
        if (user != null)
        {
            if (!await _userManager.IsEmailConfirmedAsync(user))
            {
                ModelState.AddModelError(string.Empty, 
                              "You must have a confirmed email to log in.");
                return View(model);
            }
        }

另请记住,在await _signInManager.SignInAsync(user, isPersistent: false);操作

中,阻止新注册的用户被评论Register自动记录

更多阅读official docs