Рубрики
Без рубрики

Пружинная защита с тимелиевым листом

Краткое руководство по интеграции Spring Security и Thymeleaf

Автор оригинала: baeldung.

1. Обзор

В этом кратком руководстве мы сосредоточимся на безопасности Spring с помощью Thymeleaf. Мы собираемся создать приложение Spring Boot, в котором мы продемонстрируем использование диалекта безопасности.

Наш выбор для технологии frontend – это Thymeleaf -современный серверный движок веб-шаблонов с хорошей интеграцией с фреймворком Spring MVC. Для получения более подробной информации, пожалуйста, ознакомьтесь с нашей вступительной статьей об этом.

Наконец, SpringSecurityDialect-это дополнительный модуль Thymeleaf, который, естественно, помогает интегрировать их вместе.

Мы будем использовать простой проект , который мы создали в нашей статье учебника по загрузке Spring; у нас также есть учебник по Thymeleaf с Spring, где можно найти стандартную конфигурацию Thymeleaf.

2. Зависимости

Прежде всего, давайте добавим новую зависимость в ваш Maven pom.xml :


    org.thymeleaf.extras
    thymeleaf-extras-springsecurity5

Рекомендуется всегда использовать последнюю версию, которую мы можем получить на Maven Central .

3. Конфигурация безопасности Пружины

Далее давайте определим конфигурацию для Spring Security.

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

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    // [...] 
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) 
      throws Exception {
        auth
          .inMemoryAuthentication()
          .withUser("user").password(passwordEncoder().encode("password")).roles("USER")
          .and()
          .withUser("admin").password(passwordEncoder().encode("admin")).roles("ADMIN");
    }
    
    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

Как мы видим, в configureGlobal(AuthenticationManagerBuilder auth) мы определяем двух пользователей с именем пользователя и паролем. Мы можем использовать их для доступа к нашему приложению.

Наши пользователи имеют разные роли: ADMIN и USER соответственно, чтобы мы могли представлять им определенный контент на основе роли.

4. Диалект безопасности

SpringSecuritydialect позволяет нам условно отображать содержимое на основе ролей пользователей, разрешений или других выражений безопасности. Это также дает нам доступ к объекту Spring Authentication .

Давайте посмотрим на страницу индекса, которая содержит примеры диалекта безопасности:




    
        Welcome to Spring Security Thymeleaf tutorial
    
    
        

Welcome

Spring Security Thymeleaf tutorial

Text visible to user.
Text visible to admin.
Text visible only to authenticated users.
Authenticated username:
Authenticated user roles:

Мы можем видеть атрибуты, характерные для SpringSecurityDialect: sec:authorize и sec:authentication .

Давайте обсудим это, одно за другим.

4.1. Понимание sec:авторизуйте

Проще говоря, мы используем sec:разрешить атрибут для управления отображаемым содержимым.

Например, если мы хотим показывать контент только пользователю с ролью ПОЛЬЗОВАТЕЛЬ – мы можем сделать: .

И, если мы хотим расширить доступ ко всем аутентифицированным пользователям, мы можем использовать следующее выражение:

.

4.2. Понимание sec:аутентификация

Интерфейс Spring Security Authentication предоставляет полезные методы, касающиеся аутентифицированного участника или запроса аутентификации.

Чтобы получить доступ к объекту аутентификации в Thymeleaf , мы можем просто использовать или .

Первый дает нам доступ к имени аутентифицированного пользователя, а второй позволяет нам получить доступ к ролям аутентифицированного пользователя.

5. Резюме

В этой статье мы использовали поддержку безопасности Spring в Thymeleaf в простом приложении Spring Boot.

Как всегда, рабочая версия кода, показанная в этой статье, доступна в нашем репозитории GitHub .