Я пытаюсь заставить мое веб-приложение снова работать с новой версией Spring Boot версии 1.3.5, но диалект тимелеафа больше не работает.Thymeleaf Security не работает с Spring Boot 1.3.5
Я добавил
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity4</artifactId>
</dependency>
моего .pom и даже зарегистрировал боб в моей конфигурации безопасности:
@Bean
public SpringSecurityDialect springSecurityDialect(){
SpringSecurityDialect dialect = new SpringSecurityDialect();
return dialect;
}
(хотя я предполагаю, весной загрузка будет делать это для меня во всяком случае). Вэнь, используя выражения типа e. г.
<li sec:authorize="hasRole('SITE_ADMIN') || hasRole('TENANT_ADMIN')">Admin
</li>
выражение не будет оказано, как роль, кажется, быть пустым, хотя я могу привнести свой пользовательский элемент User в контроллер:
@RequestMapping(value="/", method=RequestMethod.GET)
public String homePage(@AuthenticationPrincipal VZUser user, Model model){
model.addAttribute("email", user.getEmail());
return "home/index";
}
С отладки, я вижу Основной объект впрыскиваемого не null, но шаблон, похоже, не способен анализировать объекты sec:. Я удалил пространство имен xmlns и ввел его без эффекта. И документация по этой функции довольно откровенно ужасающая. Что-нибудь я пропустил?
О да. Тот же самый код (без новой зависимости и с объявления пространства имен в шаблоне XHTML) работал в Spring ботинке 1.3.2 ...
UPDATE
Я думаю, это связано с тем, что я используйте пользовательский UserDetailsService. У меня нет проблем с обслуживанием в памяти. Однако мой заказ реализация Пользователь только имеет следующее:
@Override
public Collection<? extends GrantedAuthority> getAuthorities(){
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
for(VZUserRoles role: roles){
authorities.add(new SimpleGrantedAuthority(role.name()));
}
return authorities;
}
Я определяю элементарные UserDetails службы и положить его в Int AuthenticationMAnagerBuilder. Аутентификация работает отлично, она просто не кажется переданной вместе с представлением.
Решение этой проблемы описано в: http://stackoverflow.com/questions/41388332/thymeleaf-3-0-spring-boot-security-integration-does- не работает –