КулЛиб - Классная библиотека! Скачать книги бесплатно
Всего книг - 719089 томов
Объем библиотеки - 1436 Гб.
Всего авторов - 276100
Пользователей - 125326

Новое на форуме

Новое в блогах

Впечатления

kiyanyn про Деревянко: Что не так со структурой атомов? (Физика)

Первый признак псевдонаучного бреда на физмат темы - отсутствие формул (или наличие тривиальных, на уровне школьной арифметики) - имеется :)

Отсутствие ссылок на чужие работы - тоже.

Да эти все формальные критерии и ни к чему, и так видно, что автор в физике остановился на уровне учебника 6-7 класса. Даже на советскую "Детскую энциклопедию" не тянет.

Чего их всех так тянет именно в физику? писали б что-то юридически-экономическое

  подробнее ...

Рейтинг: 0 ( 0 за, 0 против).
Влад и мир про Сомов: Пустой (СИ) (Боевая фантастика)

От его ГГ и писанины блевать хочется. Сам ГГ себя считает себя ниже плинтуса. ГГ - инвалид со скверным характером, стонущим и обвиняющий всех по любому поводу, труслив, любит подхалимничать и бить в спину. Его подобрали, привели в стаб и практически был на содержании. При нападений тварей на стаб, стал убивать охранников и знахаря. Оправдывает свои действия запущенным видом других, при этом точно так же не следит за собой и спит на

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).
Влад и мир про Nezloi: Первый чемпион Земли 2 (Боевая фантастика)

Мне понравились обе книги.

Рейтинг: +1 ( 1 за, 0 против).
Влад и мир про ezh: Всадник Системы (Попаданцы)

Прочитал обе книги с удовольствием. Спасибо автору!

Рейтинг: +1 ( 1 за, 0 против).
Влад и мир про Ветров: ЩИТ ИМПЕРИИ – Альтернатива (Боевая фантастика)

Слог хороший, но действие ГГ на уровне детсада. ГГ -дурак дураком. Его квартиру ограбили, впустил явно преступников, сестру явно украли.
О преступниках явившихся под видом полиции не сообщает. Соглашается с полицией не писать заявление о пропаже сестры. Что есть запрет писать заявление ранее 3 дней? Мало ли, что кто-то не хочет работать, надо входить в их интерес? Есть прокуратура и т.д., что может заставить не желающих работать. Сестра не

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).

Spring in Action Covers Spring 5-1--11 [Автор неизвестен -- Компьютеры] (fb2) читать постранично, страница - 118


 [Настройки текста]  [Cбросить фильтры]

безопасности Spring Boot, независимо от того, собираетесь ли вы использовать его для защиты веб-приложения Spring MVC или приложения, написанного с использованием Spring WebFlux. Как напоминание, вот как выглядит security стартер:

<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-security</artifactId>

</dependency>

Тем не менее, есть несколько небольших различий между моделями реактивной и нереактивной конфигурации Spring Security. Стоит взглянуть на сравнение двух моделей конфигурации.

11.5.1 Настройка реактивного web security

Напомним, что настройка Spring Security для защиты веб-приложения Spring MVC обычно включает в себя создание нового класса конфигурации, расширяющего WebSecurityConfigurerAdapter и снабженного аннотацией @EnableWebSecurity. Такой класс конфигурации переопределяет метод configuration() для указания специфики web security, например, какие полномочия требуются для определенных путей запроса. Следующий простой класс конфигурации Spring Security служит напоминанием о том, как настроить безопасность для нереактивного приложения Spring MVC:

@Configuration

@EnableWebSecurity

public class SecurityConfig extends WebSecurityConfigurerAdapter {

   @Override

   protected void configure(HttpSecurity http) throws Exception {

      http

         .authorizeRequests()

         .antMatchers("/design", "/orders").hasAuthority("USER")

         .antMatchers("/**").permitAll();

   }

}

Теперь давайте посмотрим, как эта же конфигурация может выглядеть для реактивного приложения Spring WebFlux. В следующем списке показан класс конфигурации реактивной безопасности, который примерно эквивалентен простой конфигурации безопасности из предыдущих версий.

Листинг 11.2. Настройка Spring Security для приложения Spring WebFlux

@Configuration

@EnableWebFluxSecurity

public class SecurityConfig {

   @Bean

   public SecurityWebFilterChain securityWebFilterChain(

            ServerHttpSecurity http) {

      return http

         .authorizeExchange()

         .pathMatchers("/design", "/orders").hasAuthority("USER")

         .anyExchange().permitAll()

         .and()

         .build();

   }

}

Как вы можете видеть, есть много того, что знакомо, но в то же время отличающегося. Вместо @EnableWebSecurity этот новый класс конфигурации аннотируется с помощью @EnableWebFluxSecurity. Более того, класс конфигурации не расширяет WebSecurityConfigurerAdapter или любой другой базовый класс вообще. Поэтому он также не переопределяет методы configure().

Вместо метода configure() объявляется компонент типа SecurityWebFilterChain с помощью метода securityWebFilterChain(). Тело securityWebFilterChain() не сильно отличается от предыдущих конфигураций метода configure(), но есть некоторые тонкие изменения.

Прежде всего, конфигурация объявляется с использованием заданного объекта ServerHttpSecurity вместо объекта HttpSecurity. Используя данный ServerHttpSecurity, вы можете вызвать authorizeExchange(), который примерно эквивалентен authorizeRequests(), чтобы задать безопасность на уровне запросов.

ПРИМЕЧАНИЕ ServerHttpSecurity является новинкой в Spring Security 5 и является реактивным аналогом HttpSecurity.

При сопоставлении путей вы все равно можете использовать подстановочные пути в стиле Ant, но делайте это с помощью метода pathMatchers() вместо antMatchers(). И для удобства вам больше не нужно указывать универсальный путь в Ant-стиле для /**, потому что anyExchange() возвращает все, что вам нужно.

Наконец, поскольку вы объявляете SecurityWebFilterChain как bean, а не переопределяете метод фрэймворка, вы должны вызвать метод build(), чтобы собрать все правила безопасности в возвращаемом SecurityWebFilterChain.

Помимо этих небольших различий, настройка веб-безопасности ничем не отличается для Spring WebFlux от Spring MVC. Но как насчет пользовательских данных?

11.5.2 Конфигурирование службы реактивных данных пользователя

Расширяя WebSecurityConfigurerAdapter, вы переопределяете один метод configure() для объявления правил веб-безопасности и другой метод configure() для настройки логики аутентификации, обычно путем определения объекта UserDetails. В качестве напоминания о том, как это выглядит, рассмотрим следующий переопределенный метод configure(), который использует внедренный объект UserRepository в анонимной реализации UserDetailsService для поиска пользователя по имени пользователя:

@Autowired

UserRepository userRepo;

@Override

protected void

      configure(AuthenticationManagerBuilder auth)

      throws Exception {

   auth

      .userDetailsService(new UserDetailsService() {

         @Override

         public UserDetails loadUserByUsername(String username)

               throws UsernameNotFoundException {

            User user = userRepo.findByUsername(username)

            if (user == null) {

               throw new UsernameNotFoundException(

                  username " + not found")

            }

            return user.toUserDetails();

         }

   });

}

В этой нереактивной конфигурации вы переопределяете единственный