событие создания пользователя для членства в ASP.NET или DotNetNuke - PullRequest
1 голос
/ 09 апреля 2009

Я хочу добавить код, который запускается при регистрации нового пользователя на сайте DotNetNuke. Существует специальный модуль регистрации, и я мог бы добавить к нему код. Меня беспокоит, что этот регистрационный модуль все еще находится в стадии разработки, что не совсем под моим контролем. Кто-то может сломать код, который я добавляю, или сделать что-то неожиданное.

Есть ли еще одна хорошая альтернатива, которую я могу использовать - добавить код к событиям членства пользователя?

Я рассматриваю возможность создания поставщика членства (поставщика DNN или ASP.NET), который будет производным от нашего существующего поставщика. Я бы расширил реализацию CreateUser () для вызова исходной реализации, а затем моего собственного кода.

Плюс в том, что они не связаны с компонентом регистрации. Недостатком, в отличие от добавления модуля HttpModule, где конфигурация не зависит от других аспектов сайта, является то, что я буду скрывать существующего поставщика членства. Предположим, кто-то хочет обновить провайдера по другой причине - ему придется перекомпилировать мой класс, вместо того, чтобы просто изменить файл web.config.

Я собирался создать универсальный класс, производный от MembershipProvider, а затем использовать исходный провайдер в качестве параметра универсального типа. Я надеялся, что этот тип поставщика будет включен в определение web.config. К сожалению, дженерики C # не позволяют вам выводить из универсального параметра типа. (

Ответы [ 2 ]

3 голосов
/ 18 апреля 2009

Если вы наследуете от существующего провайдера членства, почему ваш класс должен быть перекомпилирован при смене другого провайдера (при условии, что вы не используете строго именованные ссылки)? Вся идея модели провайдера заключается в том, что контракт не меняется. Любые изменения в базовом членстве провайдера будут внутренними, так как договор должен оставаться неизменным. И ваш провайдер должен сделать то же самое, так что это также может быть отменено. Если ваш провайдер просто делает:

class NewMembershipProvider : ExistingMembershipProvider

override CreateUser()
{
    //do custom stuff
    base.CreateUser();
}

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

1 голос
/ 18 апреля 2009

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

...