如何检查“用户”在ASP.NET标识(Web窗体)中是否具有已确认的电子邮件?

凯文·麦克斯韦

在我的登录页面上,我想实现一个系统,如果用户存在但没有确认的电子邮件(IsEmailConfirmed),则用户需要验证/确认该电子邮件。

重新发送确认代码没有任何问题,我的问题是将语句放在何处以及如何确保用户输入正确的用户名和密码(用户应有效)。

登录(后面的代码)

protected void LogIn(object sender, EventArgs e)
{
  // Validate the user password
  var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();
  var signinManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>();

  // Require the user to have a confirmed email before they can log on.
  var user = manager.FindByName(username.Text);

  if (IsValid)
   {
    if (user != null)
     {
      // This doen't count login failures towards account lockout
      // To enable password failures to trigger lockout, change to shouldLockout: true
      var result = signinManager.PasswordSignIn(username.Text, Password.Text, RememberMe.Checked, shouldLockout: true);

      switch (result)
       {
        case SignInStatus.Success:
        IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], 
                                                           Response);
        break;

        case SignInStatus.LockedOut:
         //Response.Redirect("/Account/Lockout");    
         FailureText.Text = "This account has been locked out, please try again later.";
         ErrorMessage.Visible = true;
         return;

        case SignInStatus.RequiresVerification:
          Response.Redirect(String.Format("/Account/TwoFactorAuthenticationSignIn?ReturnUrl={0}&RememberMe={1}",
          Request.QueryString["ReturnUrl"],
          RememberMe.Checked),
          true);
          break;

         case SignInStatus.Failure:
         default:
          FailureText.Text = "Invalid login attempt";
          ErrorMessage.Visible = true;
          break;    
          }   
        }
      }    
  else
  {
     FailureText.Text = "Account not found.";
     ErrorMessage.Visible = true;
  }

  //else if (IsValid & !manager.IsEmailConfirmed(user.Id))
  //{
     //    ScriptManager.RegisterStartupScript(this, this.GetType(), "LaunchServerSide", "$(function() { OpenLoginModal(); });", true);
        //    LoginModalTitle.Text = "Account Verification".ToUpper();
        //    LoginModalDetails.Text = "You must have a confirmed email account.";
        //    //ErrorMessage.Visible = true;
        //    //ResendConfirm.Visible = true;
        //}
 }

感谢您为解决我的问题而付出的努力

约阿希姆

如果我理解正确:您想先确保用户名和密码正确,然后再检查帐户是否处于活动状态?

protected void LogIn(object sender, EventArgs e)
{
    var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();
    var signinManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>();
    var user = manager.FindByName(username.Text);

    if (IsValid)
    {
        if (user != null)
        {
            var result = signinManager.PasswordSignIn(username.Text, Password.Text, RememberMe.Checked, shouldLockout: true);

            // If username and password is correct check if account is activated.
            if(!user.EmailConfirmed && result == SignInStatus.Success)
            {
                FailureText.Text = "Invalid login attempt. You must have a confirmed email account.";
                ErrorMessage.Visible = true;
                return;
            }        

            switch (result)
            {
                case SignInStatus.Success:
                    IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], 
                                                           Response);
                    break;
                case SignInStatus.LockedOut:
                    //Response.Redirect("/Account/Lockout");    
                    FailureText.Text = "This account has been locked out, please try again later.";
                    ErrorMessage.Visible = true;
                    return;

                case SignInStatus.RequiresVerification:
                    Response.Redirect(String.Format("/Account/TwoFactorAuthenticationSignIn?ReturnUrl={0}&RememberMe={1}",
                                                    Request.QueryString["ReturnUrl"],
                                                    RememberMe.Checked),
                                                    true);
                    break;
                case SignInStatus.Failure:
                default:
                    FailureText.Text = "Invalid login attempt";
                    ErrorMessage.Visible = true;
                    break;    
            }                
        }    
        else
        {
            FailureText.Text = "Account not found.";
            ErrorMessage.Visible = true;
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL查询以检查电子邮件是否具有多个用户标识

来自分类Dev

如何检查用户的电子邮件是否已验证?

来自分类Dev

如何更改ASP.NET Identity用户的电子邮件,而无需确认电子邮件?

来自分类Dev

如何检查用户电子邮件是否已保存在数据库中

来自分类Dev

如何检查MailChimp中是否已订阅电子邮件?

来自分类Dev

如何检查MailChimp中是否已订阅电子邮件?

来自分类Dev

如何在ASP.Net Web窗体身份中使用“用户名”而不是“电子邮件地址”登录

来自分类Dev

SharePoint 2013检查列表列是否已具有值并发送电子邮件

来自分类Dev

ASP.NET Web API 2-用户注册电子邮件确认失败

来自分类Dev

ASP.NET Web API 2-用户注册电子邮件确认失败

来自分类Dev

如何在asp.net c#Web窗体应用程序的Active Directory OU中创建所有电子邮件地址的数组列表?

来自分类Dev

防止没有确认电子邮件的用户使用身份2登录ASP.Net MVC

来自分类Dev

提交表单时,如何检查用户电子邮件是否已存在于我的数据库中?

来自分类Dev

如何为具有ASP.NET Identity 2的用户添加用户电子邮件地址

来自分类Dev

如何为具有ASP.NET Identity 2的用户添加用户电子邮件地址

来自分类Dev

如何检查用户是否在ASP.NET Core中已通过身份验证

来自分类Dev

用户在MVC ASP身份中创建帐户时如何禁用电子邮件确认

来自分类Dev

如何在ASP.NET WebAPI确认电子邮件的URL中编码字符?

来自分类Dev

发送重置电子邮件之前,如何检查用户是否存在于Firebase中?

来自分类Dev

检查此电子邮件是否已具有帐户功能不适用于PHP HTML和MySQL

来自分类Dev

防止未确认电子邮件的用户登录ASP.NET MVC Web API身份(OWIN安全)

来自分类Dev

如何检查文件数据库中是否已存在电子邮件地址?

来自分类Dev

如何使用CodeIgniter检查数据库中是否已存在电子邮件

来自分类Dev

如何以编程方式检查电报中是否已注册电子邮件?

来自分类Dev

如何检查Firestore数据库中是否已存在电子邮件

来自分类Dev

如何检查电子邮件是否已存在于数据库中

来自分类Dev

如何检查所选电子邮件和名称是否已存在于 MongoDB 中

来自分类Dev

具有特殊字符的ASP.NET MVC身份电子邮件/用户名

来自分类Dev

如何在ASP.net vb.net中获取当前用户ID的电子邮件

Related 相关文章

  1. 1

    MySQL查询以检查电子邮件是否具有多个用户标识

  2. 2

    如何检查用户的电子邮件是否已验证?

  3. 3

    如何更改ASP.NET Identity用户的电子邮件,而无需确认电子邮件?

  4. 4

    如何检查用户电子邮件是否已保存在数据库中

  5. 5

    如何检查MailChimp中是否已订阅电子邮件?

  6. 6

    如何检查MailChimp中是否已订阅电子邮件?

  7. 7

    如何在ASP.Net Web窗体身份中使用“用户名”而不是“电子邮件地址”登录

  8. 8

    SharePoint 2013检查列表列是否已具有值并发送电子邮件

  9. 9

    ASP.NET Web API 2-用户注册电子邮件确认失败

  10. 10

    ASP.NET Web API 2-用户注册电子邮件确认失败

  11. 11

    如何在asp.net c#Web窗体应用程序的Active Directory OU中创建所有电子邮件地址的数组列表?

  12. 12

    防止没有确认电子邮件的用户使用身份2登录ASP.Net MVC

  13. 13

    提交表单时,如何检查用户电子邮件是否已存在于我的数据库中?

  14. 14

    如何为具有ASP.NET Identity 2的用户添加用户电子邮件地址

  15. 15

    如何为具有ASP.NET Identity 2的用户添加用户电子邮件地址

  16. 16

    如何检查用户是否在ASP.NET Core中已通过身份验证

  17. 17

    用户在MVC ASP身份中创建帐户时如何禁用电子邮件确认

  18. 18

    如何在ASP.NET WebAPI确认电子邮件的URL中编码字符?

  19. 19

    发送重置电子邮件之前,如何检查用户是否存在于Firebase中?

  20. 20

    检查此电子邮件是否已具有帐户功能不适用于PHP HTML和MySQL

  21. 21

    防止未确认电子邮件的用户登录ASP.NET MVC Web API身份(OWIN安全)

  22. 22

    如何检查文件数据库中是否已存在电子邮件地址?

  23. 23

    如何使用CodeIgniter检查数据库中是否已存在电子邮件

  24. 24

    如何以编程方式检查电报中是否已注册电子邮件?

  25. 25

    如何检查Firestore数据库中是否已存在电子邮件

  26. 26

    如何检查电子邮件是否已存在于数据库中

  27. 27

    如何检查所选电子邮件和名称是否已存在于 MongoDB 中

  28. 28

    具有特殊字符的ASP.NET MVC身份电子邮件/用户名

  29. 29

    如何在ASP.net vb.net中获取当前用户ID的电子邮件

热门标签

归档