2013-09-28 3 views
3

Я использую thymeleaf-spring3 2.0.18 и Spring 3.1.1. Я сделал страницу входа, которая работает нормально, но, в то время как другие атрибуты Thymeleaf обрабатываются, «sec: authorize» не являются, так как я могу их увидеть, если я просмотрю исходный код сгенерированного представления.Thymeleaf не анализирует атрибут «sec: authorize»

Есть ли что-то, что мне не хватает, как dependecy или конкретная конфигурация?

Это мой login.html:

<!DOCTYPE html> 
<head> 
... 
</head> 

<body> 
<div class="top"> 
    <div class="container">   
     <ul class="loginbar pull-right"> 
      <li sec:authorize="isAnonymous()"><a href="/login" class="login-btn">Login</a></li> 
      <li sec:authorize="isAuthenticated()" class="login-btn">Welcome <span sec:authentication="name">Bob</span></li> 
     </ul> 
    </div>  
</div><!--/top--> 

<!--=== Content Part ===--> 
<div class="container">  
    <div class="row-fluid"> 
     <form name="f" th:action="@{/j_spring_security_check}" method="post" class="log-page"> 
      <h3>Login</h3> 
      <div th:if="${loginError}" th:with="errorMsg=${session['SPRING_SECURITY_LAST_EXCEPTION'].message}" class="alert alert-error"> 
       Bad user or password.<br/> 
       Cause: <span th:text="${errorMsg}">Wrong input!</span> 
      </div>  
      <div class="input-prepend"> 
       <span class="add-on"><i class="icon-user"></i></span> 
       <input name="j_username" class="input-xlarge" type="text" placeholder="Username" /> 
      </div> 
      <div class="input-prepend"> 
       <span class="add-on"><i class="icon-lock"></i></span> 
       <input name="j_password" class="input-xlarge" type="password" placeholder="Password" /> 
      </div> 
      <div class="controls form-inline"> 
       <button class="btn-u pull-right" type="submit">Login</button> 
      </div> 
     </form> 
    </div><!--/row-fluid--> 
</div><!--/container-->  
<!--=== End Content Part ===--> 

</body> 
</html> 
+0

возможно дубликат [сек авторизация и втор: аннотации аутентификации не работают] (http://stackoverflow.com/questions/18309864/secauthorize-and -secauthentication-annotations-dont-work) –

+0

Примечание. Если вы используете загрузку Spring, достаточно добавить только зависимостей. Это работало для меня без настройки компонента SpringTemplateEngine. Я использую Spring boot 1.4.1.RELEASE и плагин управления зависимостями Spring 0.5.1.RELEASE – Yasin

ответ

11

Глядя на this example я понял, что мне нужно добавить зависимость к pom.xml:

<dependency> 
     <groupId>org.thymeleaf.extras</groupId> 
     <artifactId>thymeleaf-extras-springsecurity3</artifactId> 
     <version>2.0.1</version> 
     <scope>compile</scope> 
</dependency>   

А также необходимо добавить дополнительные диалект к шаблонуИнструмент:

<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine"> 
     <property name="templateResolver" ref="templateResolver" /> 
     <property name="additionalDialects"> 
     <set> 
      <bean class="org.thymeleaf.extras.springsecurity3.dialect.SpringSecurityDialect" /> 
     </set> 
     </property>   
    </bean> 
+0

Использование Spring Boot 1.3.3 - инициация проекта с использованием start.spring.io - sec: авторизация также не работала, прежде чем вручную добавить dep в проект пОМ. – demaniak

0

У нас была аналогичная проблема, и мы разрешили ее dding пакетное сканирование в основной конфигурации контроллера контекста:

<context:component-scan base-package="org.thymeleaf.extras.springsecurity3" /> 
Смежные вопросы