public async Task <ActionResult> VerifyCode(VerifyCodeViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // 以下代码可以防范双重身份验证代码遭到暴力破解攻击。
            // 如果用户输入错误代码的次数达到指定的次数,则会将
            // 该用户帐户锁定指定的时间。
            // 可以在 IdentityConfig 中配置帐户锁定设置
            var result = await SignInManager.TwoFactorSignInAsync(model.Provider, model.Code, isPersistent : model.RememberMe, rememberBrowser : model.RememberBrowser);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToLocal(model.ReturnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "代码无效。");
                return(View(model));
            }
        }
示例#2
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }


            var result = await _signInManager.TwoFactorSignInAsync(
                provider : VerifyCode.Provider,
                code : VerifyCode.Code,
                isPersistent : VerifyCode.RememberMe,
                rememberClient : VerifyCode.BrowserRemember
                );


            if (result.Succeeded)
            {
                return(RedirectToLocal(VerifyCode.ReturnTo));
            }

            if (result.IsLockedOut)
            {
                return(RedirectToPage("/Lockout"));
            }

            ModelState.AddModelError(nameof(VerifyCode.Code), "کد وارد شده معتبر نمی باشد");

            return(Page());
        }
示例#3
0
        public async Task <IActionResult> VerifyCode(VerifyCode model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }


            var result = await _signInManager.TwoFactorSignInAsync(
                provider : model.Provider,
                code : model.Code,
                isPersistent : model.RememberMe,
                rememberClient : model.BrowserRemember
                );


            if (result.Succeeded)
            {
                return(RedirectToLocal(model.ReturnTo));
            }

            if (result.IsLockedOut)
            {
                return(View("LockOut"));
            }

            ModelState.AddModelError(nameof(model.Code), "کد وارد شده معتبر نمی باشد");

            return(View(model));
        }
示例#4
0
        public async Task <ActionResult> VerifyCode(VerifyCodeViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // The following code protects for brute force attacks against the two factor codes.
            // If a user enters incorrect codes for a specified amount of time then the user account
            // will be locked out for a specified amount of time.
            // You can configure the account lockout settings in IdentityConfig
            var result = await SignInManager.TwoFactorSignInAsync(model.Provider, model.Code, isPersistent : model.RememberMe, rememberBrowser : model.RememberBrowser);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToLocal(model.ReturnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid code.");
                return(View(model));
            }
        }