protected virtual async Task SaveLoginAttempt(SmdLoginResult <TUser> loginResult, string userNameOrEmailAddress) { var loginAttempt = new UserLoginAttempt { UserId = loginResult.User != null ? loginResult.User.Id : (long?)null, UserNameOrEmailAddress = userNameOrEmailAddress, Result = loginResult.Result, BrowserInfo = ClientInfoProvider.BrowserInfo, ClientIpAddress = ClientInfoProvider.ClientIpAddress, ClientName = ClientInfoProvider.ComputerName, }; await UserLoginAttemptRepository.InsertAsync(loginAttempt); }
public virtual async Task <SignInResult> SignInOrTwoFactorAsync(SmdLoginResult <TUser> loginResult, bool isPersistent, bool?rememberBrowser = null, string loginProvider = null, bool bypassTwoFactor = false) { if (loginResult.Result != LoginResultType.成功) { throw new ArgumentException("loginResult.Result should be success in order to sign in!"); } //using (_unitOfWorkManager.Current.SetTenantId(loginResult.Tenant?.Id)) //{ await UserManager.As <SmdUserManager <TRole, TUser> >().InitializeOptionsAsync(); //if (!bypassTwoFactor && IsTrue(SmdZeroSettingNames.UserManagement.TwoFactorLogin.IsEnabled, loginResult.Tenant?.Id)) //{ if (await UserManager.GetTwoFactorEnabledAsync(loginResult.User)) { //{ // if ((await UserManager.GetValidTwoFactorProvidersAsync(loginResult.User)).Count > 0) // { // if (!await IsTwoFactorClientRememberedAsync(loginResult.User) || rememberBrowser == false) // { // await Context.SignInAsync( // IdentityConstants.TwoFactorUserIdScheme, // StoreTwoFactorInfo(loginResult.User, loginProvider) // ); // return SignInResult.TwoFactorRequired; // } // } // } // } if (loginProvider != null) { await Context.SignOutAsync(IdentityConstants.ExternalScheme); } } await SignInAsync(loginResult.User, isPersistent, loginProvider); return(SignInResult.Success); // } }