Вопрос

У меня есть существующий сервер сообщества, и мне нравится использовать Umbraco для моего презентационного уровня.Как я могу реализовать вход / выход из системы с помощью .Аутентификация в Net forms?(Я не хочу использовать функциональность участника).У меня есть разные типы пользователей, которые получают доступ к разным типам страниц.Как я могу это контролировать?Пользовательский контроль?

Это было полезно?

Решение

Umbraco использует модель участника / поставщика ролей ASP.NET для своей системы членства, и это довольно простой шаг, чтобы заменить модель по умолчанию на вашу собственную реализацию.Я делал это в прошлом, когда хотел аутентифицировать участников в хранилище Active Directory, но я не могу представить, что аутентификация в пользовательской базе данных намного сложнее.

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

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

Чтобы пройти аутентификацию у поставщика пользовательских ролей, вам нужно будет создать класс, производный от Ролевик.Методы, которые вас заинтересуют в переопределении, следующие - Роль пользователя, Поиск пользователей в роли, Получить все роли и GetRolesForUser Получить rolesforuser.

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

Другие советы

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

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

Второй подход, который я предпочитаю сейчас, заключается в создании макроса разрешений, который отвечает за проверку права пользователя на доступ к любой странице (т.е.проверяет наличие атрибута umbracoMembersOnly и, если true, проверяет наличие переменной сеанса).Этот макрос включается в главный шаблон и, таким образом, выполняется для каждого шаблона.Если у пользователя нет разрешения на доступ к текущей странице, я перенаправляю на ту же страницу, но с добавлением ?alttemplate=RestrictedPage или аналогичного к строке запроса.(Убедитесь, что ваш макрос разрешений проверяет наличие alttemplate=RestrictedPage в строке запроса, иначе вы попадете в бесконечный цикл перенаправлений.)

Вы можете оформить заказ http://osMemberControls.codeplex.com

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top