Pojawił się problem całkowitego ignorowania tagów spring security w kodzie szablonu, silnik renderujący po prostu wyrzucał je do wynikowego HTMLa. Nie mogąc znaleźć na to rozwiązania spytałem grupę dyskusyjną o pomoc w sprawie, gdzie otrzymałem sugestie, że być może tagi springowe nie są kompatybilne z Facelets który był używany w projekcie. Okazało się to strzałem w dziesiątkę! Wersja Spring Security z którą wtedy pracowałem to 2.0.5 i wtedy (nie wiem jak jest z ver. 3.0 ? Ktoś wie ?) nie było tagów zgodnych z Facelets :-/
Z pomocą przyszedł wujek Google i projekt Spring Security Facelets Tag Library. Jest to autorskie rozwiązanie, ale gdzieś przeczytałem, że trwają rozmowy nad integracją ze Springiem.
Projekt jest bardzo ciekawy ponieważ rozwijane są wersje zgodne z JSF 1.2 jak i 2.0 oraz Spring Security 2.0 jak i 3.0.
No ale wracając to konkretów, biblioteka definiuje własne tagi działające z Facelets. Ich nazwy trochę odbiegają od tych w Springu ale możliwości są te same. Aby ich użyć w szablonie należy dodać namespace: http://www.springframework.org/security/facelets/tags
Drobne przykłady:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jstl/core" xmlns:security="http://www.springframework.org/security/facelets/tags"> <ui:composition> <f:view> <security:ifNotGranted roles="ROLE_ADMIN"> <h:outputText value="Użytkownik nie ma uprawnienia ROLE_ADMIN" /> </security:ifNotGranted> <security:ifAnyGranted roles="ROLE_USER, ROLE_ADMIN"> <h:outputText value="Użytkownik posiada chociaż jedno z uprawnień, ROLE_USER lub ROLE_ADMIN" /> </security:ifAnyGranted> <security:ifAllGranted roles="ROLE_BOSS, ROLE_ADMIN"> <h:outputText value="Użytkownik posiada oba uprawnienia, ROLE_BOSS oraz ROLE_ADMIN" /> </security:ifAllGranted> </f:view> </ui:composition> </html>I wszystko ładnie śmiga :)
Brak komentarzy:
Prześlij komentarz