Spring Security expiredUrl больше не передает никаких параметров - PullRequest
0 голосов
/ 07 апреля 2020

мой sessionManagment с expiredUrl больше не работает. Мой Spring-config выглядит очень прямо.

http.authorizeRequests().antMatchers("/data/h2-console/**").hasRole(DBA.name())
                                .antMatchers("/","/resources/**").permitAll()
                                .requestMatchers(EndpointRequest.toAnyEndpoint()).hasRole(ACTUATOR.name())
                                .antMatchers("/login*").hasRole(ANONYMOUS.name())
                                .antMatchers("/links/").permitAll()

            .and()
            .sessionManagement().maximumSessions(1)
                                .expiredUrl("/login?oneSession")
                                .and()
                                .sessionFixation().newSession()
            .and()
            .formLogin().loginPage("/login")
                        .usernameParameter("email")
                        .successHandler(userSuccessfullAthenticationHandler())
                        .failureUrl("/login?error")

И когда я буду перенаправлен, мой параметр "expiredUrl (" / login? OneSession ")" больше не присутствует. Изначально он отлично работает из коробки. По умолчанию я использую SimpleRedirectInvalidSessionStrategy. SimpleRedirectInvalidSessionStrategy имеет метод onInvalidSessionDetected. Этот метод никогда не будет вызван, потому что ConcurrentSessionFilter.doFilter

В методе "doFilter" в ConcurrentSessionFilter он извлекает старый идентификатор сеанса, чтобы проверить, истек он или нет, но сеанс является нулевым. Поэтому он никогда не вызывает «onInvalidSessionDetected».

Итак

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...