2010-08-22 2 views
4

Я обнаружил Tapestry 5, совсем недавно, его четкое разделение между представлением и контроллером, использование стандартизации имени вместо XML заставило меня пойти на это прямо. Честно говоря, я не планирую меняться, но документации для меня просто недостаточно.Как использовать Tapestry-Security?

Проект, над которым я работаю, должен поддерживать несколько типов ролей. Я должен разрешать пользователям аутентификацию, использование сертификационных сервисов в соответствии с их ролями и доступ к URL по их ролям.

После некоторого исследования я наткнулся на Tapestry-Security, который является частью проекта Тынамо.

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

Моя проблема заключается в том, что я не вижу, как использовать Tapestry-Security без использования Tapestry. Пример, который они показывают в руководстве Tapestry-Security, для меня просто недостаточен. У меня есть довольно грубая идея, как это работает. Однако я не знаю, как я мог использовать его за пределами Гобелена 5.

Как использовать Tapestry-Security без Tapestry 5?

Я также не понимаю фильтры, используемые в классе AppModule в проекте Tapestry. Есть ли документ, который объясняет, как AppModule работает с системой фильтров?

Есть ли кто-нибудь, кто может объяснить мне эти вещи или указать мне в правильном направлении?

Спасибо.

ответ

8

Tapestry-Security - это всего лишь тонкий слой поверх проекта Apache Shiro. Он только обеспечивает:

  • способ настройки Shiro с помощью модуля приложения Гобелена
  • набора Гобелена фильтров делать фактические проверки безопасности для гобеленов страниц и действия
  • annotations вы должны хотите объявить безопасность декларативно
  • components для поддержки условной визуализации в ваших .tml файлов

Под этим слоем, там является обычным экземпляром Shiro, выполняющим всю работу, поэтому вы можете получить доступ к безопасности (например, через класс SecurityUtils), как обычно, если бы Гобелен вообще не участвовал.

Редактировать на комментарий: Так что, пока вы можете использовать Shiro в любом используемом вами веб-приложении, Tapestry-Security на самом деле просто обертка для использования с Tapestry. Если у вас, однако, есть приложение, которое включает в себя Tapestry вместе с другими сервлетами (например, веб-сервис), вы должны позволить Tapestry-Security выполнять работу по инициализации.

Что касается фильтров гобеленов: Я боюсь, что это не задокументировано очень хорошо. Фильтры гобеленов очень похожи на фильтры сервлетов, но поскольку Tapestry - implemented as a Servlet Filter itself, он имеет собственную цепочку фильтров. Фильтры для Tapestry реализуют интерфейс RequestFilter.

public class MyFilter implements RequestFilter { 

    @Override 
    public boolean service(final Request request, final Response response, 
      final RequestHandler handler) throws IOException { 
     ... //your code 
     try { 
      return handler.service(request, response); 
     } finally { 
      ... //your code 
     } 

    } 
} 

Вы можете добавить их в цепочку фильтров, внося их в модуль приложения:

public void contributeRequestHandler(
      final OrderedConfiguration<RequestFilter> configurations) { 
    configuration.add("MyFilter", new MyFilter()); 
} 
+0

Большое вам спасибо за это. Означает ли это, что гобелен-безопасность может использоваться без архитектуры Гобелена, но мне нужно добавить фильтр Tapestry-Security в любом приложении, которое я использую? или что я должен использовать Сиро в моем сервисном слое, а затем использовать Tapestry-Security в своем веб-приложении для его инициализации? Я получаю точку на фильтре, я предполагаю, что реализую интерфейс RequestFilter и добавляю его в класс AppModule, добавляя его методы создания, позволяя мне расширять возможности Tapestry. – lollancf37

+0

@ lollancf37: Я обновил свой ответ. Об фильтрах: Да, для чего они нужны. – Henning

+0

Большое спасибо, сейчас я понимаю вещи намного лучше. – lollancf37

Смежные вопросы