Членство в ASP.Net - PullRequest
0 голосов
/ 20 июля 2010

Есть ли способ отключить поставщика членства ASP.Net от использования web.config?

В настоящее время он хранит строку подключения и sqlMembershipProvider в файле web.config, который находится не там, где мне бы хотелось.

Спасибо

Ответы [ 2 ]

6 голосов
/ 20 июля 2010

Обычно вы можете использовать провайдера сразу после вызова его конструктора по умолчанию и вызова Initialize для него. Однако невозможно использовать абстракцию System.Web.Security.Membership без web.config, поскольку класс Membership жестко связан с файлом конфигурации. При использовании класса Membership он будет создавать экземпляры типов, настроенных вами в файле конфигурации.

Как я уже сказал, если вы не хотите настраивать его в файле конфигурации, вы можете создать его в коде. Это был бы хороший подход, особенно если у вас есть собственная платформа IoC (вы можете увидеть фасад Membership как реализацию IoC только для типов, производных от MembershipProvider). Вот пример того, как создать SqlMembershipProvider:

var configuration = new NameValueCollection();

configuration.Add("name", "SqlProvider");
configuration.Add("connectionStringName", "SqlServices");
configuration.Add("applicationName", "MyApplication");
configuration.Add("enablePasswordRetrieval", "false");
configuration.Add("enablePasswordReset", "true");
configuration.Add("requiresQuestionAndAnswer", "true");
configuration.Add("requiresUniqueEmail", "false");
configuration.Add("passwordFormat", "Hashed");
configuration.Add("maxInvalidPasswordAttempts", "5");
configuration.Add("passwordAttemptWindow", "10");

var provider = new SqlMembershipProvider();
provider.Initialize("SqlProvider", configuration);

// And here store it in a static field or register it with your
// favorite IoC container.
container.RegisterSingle<MembershipProvider>(provider);

Удачи.

1 голос
/ 20 июля 2010

Сантехнические услуги провайдера определяются конфигурацией.

В зависимости от вашего уровня опыта, вы можете свернуть своих собственных провайдеров, которые инициализируются другими способами, но это определенно нетривиальная задача и таит в себе тонкие ловушки, которые всплывают в самые неподходящие моменты,возможно, когда ваш босс войдет в систему и у него пропадет сетевой пароль.

Попытка программной инициализации внутренних провайдеров будет разочаровывающим занятием.

Может помочь, если вы объясните, почемуне нравится использовать файл конфигурации для конфигурации?

...