Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Tag ( authorize ) em Thymeleaf

Boa tarde,

Gostaria de saber como utilizo tag authorize="hasRole('ROLE_ADMIN')" para bloquear visualização de funções na parte do front-end.

Estou utilizando Thymeleaf e não JSP.

<div sec:authorize="hasRole('ROLE_ADMIN')"> This will only be displayed if authenticated user has role ROLE_ADMIN. </div>

Quando eu logo com usuario com ROLE_USER ele consegue ver a mensagem.

4 respostas

Fala Renan, tudo bem ?

O código em si está correto. Não consigo ver nenhuma problema.

Tente ver como fica o html gerado, talvez ela não deva estar sendo resolvida quando a engine do Thymeleaf roda. Talvez o que pode estar ocorrendo é algum problema de configuração.

Dê uma olhada neste link. Nele tem um readme completinho de configuração dos módulos de integração entre o thymeleaf e o spring security.

Espero ter ajudado. Abraço!

Beleza Rafael, poderia me dizer onde coloco este trecho de código ?

<bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
      ...
      <property name="additionalDialects">
        <set>
          <!-- Note the package would change to 'springsecurity3' if you are using that version -->
          <bean class="org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect"/>
        </set>
      </property>
      ...
    </bean>
solução!

Fala Renan, tudo bem ?

Esse código deveria estar no xml de configuração do spring. Se você não está usando essa configuração, poderia configurar programaticamente escrevendo um método numa classe com @Configuration .. ou na própria classe de entrada de uma app Spring Boot por exemplo.

Este método seria equivalente ao xml:

    @Bean
    public SpringTemplateEngine templateEngine(TemplateResolver templateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();

        templateEngine.setTemplateResolver(templateResolver);
        templateEngine.addDialect(new SpringSecurityDialect());
        return templateEngine;
    }

Abraço!

Funcionou !

Adicionei esta configuração e coloquei e thymeleaf extras no pom para resolver a dependência que a classe SpringSecurityDialect estava precisando.

Vlwww !