.Net RoleProvider без строки подключения - PullRequest
1 голос
/ 22 января 2010

Я хотел бы использовать .Net SqlMembershipProvider и SqlRoleProvider для управления пользователями в моем приложении. Моя проблема в том, что когда приложение запускается, оно не знает никакой информации о подключении к БД. В целях безопасности необходимо получить эту информацию от службы WCF, работающей на сервере базы данных. Поэтому мне нужно постоять своих провайдеров членства / роли.

Я думаю, что мне удалось создать и добавить поставщика членства:

// register membership provider
var membership = new SqlMembershipProvider();
var providerValues = new NameValueCollection();
providerValues.Add("name", "sqlMembershipProvider");
providerValues.Add("applicationName", "/");
providerValues.Add("connectionStringName", "connectionStrDynamAddedToConfig");
providerValues.Add("maxInvalidPasswordAttempts", "10");
membership.Initialize("sqlMembershipProvider", providerValues);

До сих пор я не смог разработать нечто подобное для создания RoleProvider. Я могу создать провайдера, но не могу добавить его в диспетчер ролей. Нужно ли создавать собственного провайдера, который может принимать connectionString после того, как он уже инициализирован?

1 Ответ

0 голосов
/ 23 января 2010

Я столкнулся с этой страницей , которая рекомендует "загрузить ProviderToolkitSamples и изменить класс SQLConnectionHelper. В частности, функция GetConnectionString, которая выглядит примерно так"

internal static string GetConnectionString(string specifiedConnectionString, bool lookupConnectionString, bool appLevel)
{
        if (specifiedConnectionString == null || specifiedConnectionString.Length < 1)
            return null;

        string connectionString = null;

        /////////////////////////////////////////
        // Step 1: Check <connectionStrings> config section for this connection string
        if (lookupConnectionString)
        {
            ConnectionStringSettings connObj = ConfigurationManager.ConnectionStrings[specifiedConnectionString];
            if (connObj != null)
                connectionString = connObj.ConnectionString;

            if (connectionString == null)
                return null;
        }
        else
        {
            connectionString = specifiedConnectionString;
        }

        return connectionString;
    }
}

Текст взят из williablog.net, поскольку, как говорится на этой странице, «ссылки могут ломаться со временем»

...