Пример #1
0
        public virtual void RegisterTwoFactorProviders(int?tenantId)
        {
            TwoFactorProviders.Clear();

            if (!IsTrue(AbpZeroSettingNames.UserManagement.TwoFactorLogin.IsEnabled, tenantId))
            {
                return;
            }

            if (EmailService != null &&
                IsTrue(AbpZeroSettingNames.UserManagement.TwoFactorLogin.IsEmailProviderEnabled, tenantId))
            {
                RegisterTwoFactorProvider(
                    L("Email"),
                    new EmailTokenProvider <TUser, long>
                {
                    Subject    = L("EmailSecurityCodeSubject"),
                    BodyFormat = L("EmailSecurityCodeBody")
                }
                    );
            }

            if (SmsService != null &&
                IsTrue(AbpZeroSettingNames.UserManagement.TwoFactorLogin.IsSmsProviderEnabled, tenantId))
            {
                RegisterTwoFactorProvider(
                    L("Sms"),
                    new PhoneNumberTokenProvider <TUser, long>
                {
                    MessageFormat = L("SmsSecurityCodeMessage")
                }
                    );
            }
        }
Пример #2
0
        public TwoFactorProviderType?GetDefaultTwoFactorProvider(bool u2fSupported)
        {
            if (TwoFactorProvidersData == null)
            {
                return(null);
            }
            if (SelectedTwoFactorProviderType != null &&
                TwoFactorProvidersData.ContainsKey(SelectedTwoFactorProviderType.Value))
            {
                return(SelectedTwoFactorProviderType.Value);
            }
            TwoFactorProviderType?providerType = null;
            var providerPriority = -1;

            foreach (var providerKvp in TwoFactorProvidersData)
            {
                if (TwoFactorProviders.ContainsKey(providerKvp.Key))
                {
                    var provider = TwoFactorProviders[providerKvp.Key];
                    if (provider.Priority > providerPriority)
                    {
                        if (providerKvp.Key == TwoFactorProviderType.U2f && !u2fSupported)
                        {
                            continue;
                        }
                        providerType     = providerKvp.Key;
                        providerPriority = provider.Priority;
                    }
                }
            }
            return(providerType);
        }
Пример #3
0
        public virtual void RegisterTwoFactorProviders()
        {
            TwoFactorProviders.Clear();

            if (false)
            {
                RegisterTwoFactorProvider(
                    "邮箱",
                    new EmailTokenProvider <TUser, long>
                {
                    Subject    = "安全码",
                    BodyFormat = "您的安全码是: {0}"
                }
                    );
            }

            if (false)
            {
                RegisterTwoFactorProvider(
                    "短信",
                    new PhoneNumberTokenProvider <TUser, long>
                {
                    MessageFormat = "您的短信验证码是: {0}"
                }
                    );
            }
        }
Пример #4
0
 public virtual async Task <bool> VerifyTwoFactorTokenAsync(TUser user, string twoFactorProvider, string token)
 {
     ThrowIfDisposed();
     if (user == null)
     {
         throw new ArgumentNullException("user");
     }
     if (!TwoFactorProviders.ContainsKey(twoFactorProvider))
     {
         throw new NotSupportedException("No TwoFactorProvider");
     }
     return(await TwoFactorProviders[twoFactorProvider].ValidateAsync(twoFactorProvider, token, this, user));
 }
Пример #5
0
 private void ConfigureTwoFactorAuthentication()
 {
     TwoFactorProviders.Add("TwoFactorEmailAuth", new EmailTokenProvider <RocamAppUser, string>());
     //TwoFactorProviders.Add("TwoFactorSmsAuth", new PhoneNumberTokenProvider<RocamAppUser, string>());
 }