аутентификация umbraco

Да, будет некоторая потеря производительности при использовании блокировки, но это обычно neglible достаточно для не имения значение.

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

10
задан Niels Bosma 28 September 2009 в 21:03
поделиться

3 ответа

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

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

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

Для аутентификации с использованием настраиваемого поставщика ролей вам необходимо создать класс, производный от RoleProvider . Методы, которые вас интересуют для переопределения: IsUserInRole , FindUsersInRole , GetAllRoles и GetRolesForUser .

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

но я знаю других, кто это сделал.

Для аутентификации с помощью поставщика настраиваемых ролей вам необходимо создать класс, производный от RoleProvider . Вам будут интересны следующие методы переопределения: IsUserInRole , FindUsersInRole , GetAllRoles и GetRolesForUser .

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

но я знаю других, кто это сделал.

Для аутентификации с помощью поставщика настраиваемых ролей вам необходимо создать класс, производный от RoleProvider . Методы, которые вас интересуют для переопределения: IsUserInRole , FindUsersInRole , GetAllRoles и GetRolesForUser .

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

18
ответ дан 3 December 2019 в 19:34
поделиться

I've used two approaches on my umbraco sites. Both approaches include user controls for login and logout that are responsible for authenticating a user with a custom solution and clearing credentials respectively. I also add, for both approaches, an umbracoMembersOnly attribute to any document types that I want to protect.

In the first approach, I had each individual template check to see whether or not the user was restricted from access. To abstract this, I created a siteuser class with an isMember or isLoggedIn method that was available site-wide and could be called from either an XSLT or User Control macro. The benefit to this approach is that I could tailor custom messages on each template rather than merely providing the same access denied page.

The second approach - which is the one I favor now - if to create a Permissions macro that is responsible for checking the user's right to access any page (i.e. checks for an umbracoMembersOnly attribute and, if true, checks for a session variable). This macro gets included in the master template, and so executes on every template. If the user doesn't have permission to access the current page, I redirect to the same page but with an ?alttemplate=RestrictedPage or similar appended to the query string. (Make sure that your Permissions macro checks for an alttemplate=RestrictedPage in the query string, or you'll end up in an infinite loop of redirects.)

1
ответ дан 3 December 2019 в 19:34
поделиться

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

1
ответ дан 3 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: