Разочарование в ASP.NET FormsAuthentication: как я могу подключить пользовательский MembershipProvider? - PullRequest
0 голосов
/ 09 ноября 2011

Кажется, я не очень хорошо выразил свой вопрос, поэтому я добавляю его в качестве дополнительного заголовка: как я могу расширить класс FormsAuthentication, чтобы я мог переопределить поведение по умолчанию в файле конфигурации (например, передать управление выполнением вMembershipProvider для обновления LastActivity для MembershipUser для запроса новой страницы) и, в случае сбоя, замените механизм класса FormsAuthentication моим собственным пользовательским классом и используйте его в качестве класса FormsAuthentication, который обычно используется?

Какмы реализуем менее смехотворно жесткую, более расширяемую платформу FormsAuthentication, которая позволит нам интегрироваться в пользовательский MembershipProvider?Была ли работа по этому вопросу?В конечном счете, я хотел бы добавить в свой web.config что-то вроде этого:

<authentication mode="Forms">
    <forms membershipProvider="MyCustomMembershipProvider">
        <events>
            <add event="AuthenticatedRequest" action="OnAuthRequest" />
            <add event="UnAuthenticatedRequest" action="OnRequest" />
            <add event="UnAuthorizedRequest" action="UnAuthRequest" />
        </events>
    </forms>
</authentication>

Это не должно занимать все мое время.Аутентификация с помощью форм выглядит довольно низкоуровневой в жизненном цикле страницы ASP.NET, но должен быть способ ее чисто обойти.

Речь идет не о поставщике настраиваемого членства.Я хочу реализовать вещи в своем классе провайдера членства, такие как подразумеваемые функции «IsOnline» и «LastActivity», но FormsAuthentication устанавливает cookie и не оглядывается назад.Я хочу ввести свой собственный код, когда он проверяет этот файл cookie, но не могу.Должен быть какой-то другой способ, кроме как наложить собственное печенье сверху.

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

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

Эта статья может быть тем, что вы ищете:

http://www.asp.net/security/tutorials/forms-authentication-configuration-and-advanced-topics-cs

1 голос
/ 09 ноября 2011

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

Вы правы в том, что Аутентификация с помощью форм просто создает cookie; это все, что он должен был сделать - помочь вашему приложению определить, вошел ли ваш пользователь в систему. Часть Членство - это то, что сообщает вам IsOnline и LastActivity и другую информацию пользователя.

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

...