SqlMembershipProvider InitializeAndGetAspMembershipConfig(String connectionString, String appName) { // https://stackoverflow.com/questions/3021877/how-to-read-system-web-section-from-web-config // https://stackoverflow.com/questions/1026079/how-can-i-configure-asp-net-membership-providers-through-code // https://stackoverflow.com/questions/357465/can-i-add-connectionstrings-to-the-connectionstringcollection-at-runtime typeof(ConfigurationElementCollection) .GetField("bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic) .SetValue(ConfigurationManager.ConnectionStrings, false); ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings("DefaultConnection", connectionString, "System.Data.SqlClient")); var membershipProv = new SqlMembershipProvider(); membershipProv.Initialize("AspNetSqlMembershipProvider", new NameValueCollection { ["connectionStringName"] = "DefaultConnection", ["applicationName"] = appName, ["enablePasswordRetrieval"] = "false", ["enablePasswordReset"] = "true", ["requiresQuestionAndAnswer"] = "false", ["requiresUniqueEmail"] = "true", ["minRequiredNonalphanumericCharacters"] = "0", ["minRequiredPasswordLength"] = "12", ["maxInvalidPasswordAttempts"] = "10", ["passwordStrengthRegularExpression"] = "(?:[A-Z][a-z0-9\\W_])|(?:[a-z][A-Z0-9\\W_])|(?:[0-9][A-Za-z\\W_])|(?:[\\W_][A-Za-z0-9])", ["passwordFormat"] = "Hashed" }); return(membershipProv); }
public static SqlMembershipProvider InitializeAndGetAspMembershipConfig(String connectionstring, String appname, String hashAlgo) { typeof(ConfigurationElementCollection) .GetField("bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic) .SetValue(ConfigurationManager.ConnectionStrings, false); ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings("DefaultConnection", connectionstring, "System.Data.SqlClient")); var membershipProv = new SqlMembershipProvider(); membershipProv.Initialize("AspNetSqlMembershipProvider", new NameValueCollection { ["connectionStringName"] = "DefaultConnection", ["applicationName"] = appname, ["enablePasswordRetrieval"] = "false", ["enablePasswordReset"] = "true", ["requiresQuestionAndAnswer"] = "false", ["requiresUniqueEmail"] = "true", ["minRequiredNonalphanumericCharacters"] = "0", ["minRequiredPasswordLength"] = "1", ["maxInvalidPasswordAttempts"] = "10", ["passwordStrengthRegularExpression"] = ".+", ["passwordFormat"] = "Hashed" }); typeof(SqlMembershipProvider) .GetField("s_HashAlgorithm", BindingFlags.Instance | BindingFlags.NonPublic) .SetValue(membershipProv, hashAlgo); return(membershipProv); }
public void ProfileSystem_UnitTest_CreateUserWithAccount() { Account act; SqlMembershipProvider provider; NameValueCollection collection; string userName; MembershipUser user; //first initialize the membership objects provider = new SqlMembershipProvider(); collection = new NameValueCollection(); collection.Add("applicationName", "eCommerceFramework"); collection.Add("name", "CMSMembershipProvider"); collection.Add("requiresQuestionAndAnswer", "false"); collection.Add("connectionStringName", "MembershipSqlConnection"); provider.Initialize(collection["name"], collection); userName = "******"; try { // Retrieve user user = provider.GetUser(userName, false); if (user == null) { // Following exception raised at Membership.CreateUser (can't step in either for whatever reason) // System.NotSupportedException: Specified method is not supported. user = Membership.CreateUser(userName, userName, userName + "@mediachase.com"); act = ProfileContext.Current.CreateAccountForUser(user); } else { act = ProfileContext.Current.GetAccount(user.ProviderUserKey.ToString()); } // Assert that account is retrieved. Assert.IsNotNull(act, "Failed: Account associated with user could not be retrieved.\n"); Console.WriteLine("Created account with ID: {0}.\n", act.AccountId); // Delete created account Console.WriteLine("Deleting user {0}.", act.AccountId); act.Delete(); act.AcceptChanges(); Assert.IsTrue(act.ObjectState == MetaObjectState.Deleted, "Failed: Account was not deleted.\n"); // Delete new user, assert that it happened. Assert.IsTrue(provider.DeleteUser(userName, true), "Failed: User was not deleted.\n"); } catch (Exception exc) { // Clean-up provider.DeleteUser(userName, true); throw exc; } }
public MembershipService() { //HACK: Hardcoded values!!! NameValueCollection config = new NameValueCollection(); config.Add("name", "SqlMembershipProvider"); config.Add("connectionStringName", "arachnode_net_ConnectionString"); config.Add("applicationName", "arachnode.net"); SqlMembershipProvider.Initialize("SqlMembershipProvider", config); }
public Provider() { try { SqlMembershipProvider sqlMembershipProvider = new SqlMembershipProvider(); NameValueCollection config = new NameValueCollection(); config.Add("connectionStringName", "myConnection"); config.Add("enablePasswordRetrieval", "false"); config.Add("enablePasswordReset", "true"); config.Add("requiresQuestionAndAnswer", "false"); config.Add("applicationName", "MyApp"); config.Add("requiresUniqueEmail", "true"); config.Add("maxInvalidPasswordAttempts", "3"); config.Add("passwordAttemptWindow", "5"); config.Add("commandTimeout", "30"); config.Add("name", "AspNetSqlMembershipProvider"); config.Add("minRequiredPasswordLength", "9"); config.Add("minRequiredNonalphanumericCharacters", "1"); sqlMembershipProvider.Initialize(config["name"], config); MembershipProviderCollection membershipProviders = new MembershipProviderCollection(); membershipProviders.Add(sqlMembershipProvider); membershipProviders.SetReadOnly(); BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Static; Type membershipType = typeof(Membership); membershipType.GetField("s_Initialized", bindingFlags).SetValue(null, true); membershipType.GetField("s_InitializeException", bindingFlags).SetValue(null, null); membershipType.GetField("s_HashAlgorithmType", bindingFlags).SetValue(null, "SHA-512"); membershipType.GetField("s_HashAlgorithmFromConfig", bindingFlags).SetValue(null, false); membershipType.GetField("s_UserIsOnlineTimeWindow", bindingFlags).SetValue(null, 15); membershipType.GetField("s_Provider", bindingFlags).SetValue(null, sqlMembershipProvider); membershipType.GetField("s_Providers", bindingFlags).SetValue(null, membershipProviders); var connectionString = Membership.Provider.GetType().GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic); if (connectionString != null) { connectionString.SetValue(Membership.Provider, DBCommands._Connection); } NewPasswordNeeded(); } catch (Exception ex) { DBCommands.RecordError(ex); } }
private static MembershipProvider CreateMembershipProvider() { var config = ConfigurationManager.OpenExeConfiguration(assemblyFilePath); var systemWebGroup = config.SectionGroups["system.web"]; if (systemWebGroup == null) { throw new ConfigurationErrorsException("system.web group not found in configuration"); } var membershipSection = systemWebGroup.Sections["membership"]; if (membershipSection == null) { throw new ConfigurationErrorsException("membership section not found in system.web group"); } var defaultProviderProperty = membershipSection.ElementInformation.Properties["defaultProvider"]; if (defaultProviderProperty == null) { throw new ConfigurationErrorsException("defaultProvider property not found in membership section"); } var defaultProviderName = defaultProviderProperty.Value as string; if (defaultProviderName == null) { throw new ConfigurationErrorsException("defaultProvider property is not a string value"); } var providersProperty = membershipSection.ElementInformation.Properties["providers"]; if (providersProperty == null) { throw new ConfigurationErrorsException("providers property not found in membership section"); } var providerCollection = providersProperty.Value as ProviderSettingsCollection; if (providerCollection == null) { throw new ConfigurationErrorsException("providers property is not an instance of ProviderSettingsCollection"); } ProviderSettings membershipProviderSettings = null; foreach (ProviderSettings providerSetting in providerCollection) { if (providerSetting.Name == defaultProviderName) { membershipProviderSettings = providerSetting; } } if (membershipProviderSettings == null) { if (providerCollection.Count > 0) { membershipProviderSettings = providerCollection[0]; } else { throw new ConfigurationErrorsException("No providers found in configuration"); } } var provider = new SqlMembershipProvider(); provider.Initialize("MySqlMembershipProvider", membershipProviderSettings.Parameters); return(provider); }