public override void Initialize(string name, NameValueCollection config){ if (config == null) throw new ArgumentNullException("config"); if (String.IsNullOrEmpty(name)) name = "SqlRoleProvider"; if (string.IsNullOrEmpty(config["description"])) { config.Remove("description"); config.Add("description", StringResources.GetString(StringResources.RoleSqlProviderDescription)); } base.Initialize(name, config); _commandTimeout = SecUtility.GetIntValue( config, "commandTimeout", 30, true, 0 ); string temp = config["connectionStringName"]; if (string.IsNullOrEmpty(temp)) throw new ProviderException(StringResources.GetString(StringResources.ConnectionNameNotSpecified)); _sqlConnectionString = SqlConnectionHelper.GetConnectionString(temp, true, true); if (string.IsNullOrEmpty(_sqlConnectionString)) { throw new ProviderException(StringResources.GetString(StringResources.ConnectionStringNotFound, temp)); } SqlConnectionHolder holder = SqlConnectionHelper.GetConnection(_sqlConnectionString, true); _dataSource.Initialize(ApplicationName, holder, this, CommandTimeout); _schemaVersion = new SchemaVersion(_dataSource, this, holder.Connection); _appName = config["applicationName"]; if (string.IsNullOrEmpty(_appName)) _appName = SecUtility.GetDefaultAppName(); if( _appName.Length > 256 ) { throw new ProviderException(StringResources.GetString(StringResources.ProviderApplicationNameTooLong)); } config.Remove("connectionStringName"); config.Remove("applicationName"); config.Remove("commandTimeout"); if (config.Count > 0) { string attribUnrecognized = config.GetKey(0); if (!String.IsNullOrEmpty(attribUnrecognized)) throw new ProviderException(StringResources.GetString(StringResources.ProviderUnrecognizedAttribute, attribUnrecognized)); } }
private void ApplySettingsFromAppConfig(NameValueCollection config, string name) { if (string.IsNullOrEmpty(config["description"])) { config.Remove("description"); config.Add("description", StringResources.GetString(StringResources.MembershipSqlProviderDescription)); } base.Initialize(name, config); _enablePasswordRetrieval = SecUtility.GetBooleanValue(config, "enablePasswordRetrieval", false); _enablePasswordReset = SecUtility.GetBooleanValue(config, "enablePasswordReset", true); _requiresQuestionAndAnswer = SecUtility.GetBooleanValue(config, "requiresQuestionAndAnswer", true); _requiresUniqueEmail = SecUtility.GetBooleanValue(config, "requiresUniqueEmail", true); _maxInvalidPasswordAttempts = SecUtility.GetIntValue( config, "maxInvalidPasswordAttempts", 5, false, 0 ); _passwordAttemptWindow = SecUtility.GetIntValue( config, "passwordAttemptWindow", 10, false, 0 ); _minRequiredPasswordLength = SecUtility.GetIntValue( config, "minRequiredPasswordLength", 7, false, 128 ); _minRequiredNonalphanumericCharacters = SecUtility.GetIntValue( config, "minRequiredNonalphanumericCharacters", 1, true, 128 ); _passwordStrengthRegularExpression = config["passwordStrengthRegularExpression"]; if( _passwordStrengthRegularExpression != null ) { _passwordStrengthRegularExpression = _passwordStrengthRegularExpression.Trim(); if( _passwordStrengthRegularExpression.Length != 0 ) DataProviderHelper.ValidateRegularExpression(_passwordStrengthRegularExpression); } else _passwordStrengthRegularExpression = string.Empty; if (_minRequiredNonalphanumericCharacters > _minRequiredPasswordLength) throw new HttpException(StringResources.GetString(StringResources.MinRequiredNonalphanumericCharactersCanNotBeMoreThanMinRequiredPasswordLength)); _commandTimeout = SecUtility.GetIntValue( config, "commandTimeout", 30, true, 0 ); _appName = config["applicationName"]; if (string.IsNullOrEmpty(_appName)) _appName = SecUtility.GetDefaultAppName(); if( _appName.Length > 256 ) { throw new ProviderException(StringResources.GetString(StringResources.ProviderApplicationNameTooLong)); } string membershipPasswordFormatString = config["passwordFormat"] ?? "Hashed"; _passwordFormat = DataProviderHelper.ConvertToMembershipPasswordFormat(membershipPasswordFormatString); if (PasswordFormat == MembershipPasswordFormat.Hashed && EnablePasswordRetrieval) throw new ProviderException(StringResources.GetString(StringResources.ProviderCanNotRetrieveHashedPassword)); string connectionStringName = config["connectionStringName"]; if (string.IsNullOrEmpty(connectionStringName)) throw new ProviderException(StringResources.GetString(StringResources.ConnectionNameNotSpecified)); _sqlConnectionString = SqlConnectionHelper.GetConnectionString(connectionStringName, true, true); if (string.IsNullOrEmpty(_sqlConnectionString)) { throw new ProviderException(StringResources.GetString(StringResources.ConnectionStringNotFound, connectionStringName)); } SqlConnectionHolder holder = SqlConnectionHelper.GetConnection(_sqlConnectionString, true); _dataSource.Initialize(ApplicationName, holder, this, CommandTimeout); _schemaVersion = new SchemaVersion(_dataSource, this, holder.Connection); config.Remove("connectionStringName"); config.Remove("enablePasswordRetrieval"); config.Remove("enablePasswordReset"); config.Remove("requiresQuestionAndAnswer"); config.Remove("applicationName"); config.Remove("requiresUniqueEmail"); config.Remove("maxInvalidPasswordAttempts"); config.Remove("passwordAttemptWindow"); config.Remove("commandTimeout"); config.Remove("passwordFormat"); config.Remove("name"); config.Remove("minRequiredPasswordLength"); config.Remove("minRequiredNonalphanumericCharacters"); config.Remove("passwordStrengthRegularExpression"); if (config.Count > 0) { string attribUnrecognized = config.GetKey(0); if (!String.IsNullOrEmpty(attribUnrecognized)) throw new ProviderException(StringResources.GetString(StringResources.ProviderUnrecognizedAttribute, attribUnrecognized)); } }