Настройте Spring Security для возврата JSON ответа после аутентификации - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть старое приложение, которое весной 4 с пользовательским интерфейсом как JSP. Нужно перенести презентационный слой с весны, чтобы отреагировать на приложение. Когда я вызываю / регистрируюсь с параметрами, это дает мне HTML, Как мне изменить мои существующие логины безопасности Spring c, чтобы он возвращал ответ json.

Вот фрагмент кода

protected void configure(HttpSecurity http) throws Exception {      
        http.sessionManagement().maximumSessions(1).and().invalidSessionUrl(URLConstants.LOGIN_URL);
        http.csrf().disable();
        http.anonymous().disable()
                .authorizeRequests().antMatchers("/")
                .access("hasRole('USER') or hasRole('ADMIN') or hasRole('DC MANAGER')")
.and().formLogin()          .loginProcessingUrl(URLConstants.LOGIN_URL).usernameParameter("ssoId").passwordParameter("password").and()
.rememberMe().rememberMeParameter("remember-me").tokenRepository(tokenRepository)               .tokenValiditySeconds(18400).and().exceptionHandling().accessDeniedPage("/Access_Denied");
    }

1 Ответ

0 голосов
/ 09 апреля 2020

Напишите пользовательский AuthenticationSuccessHandler, который записывает ваш JSON и подключите его к вашему formLogin ().

.formLogin().successHandler(yourSucessHandlerBean);

Ваш обработчик может выглядеть примерно так:

@Component
public class Securityhandler implements AuthenticationSuccessHandler {

 public void onAuthenticationSuccess(HttpServletRequest request,   HttpServletResponse response, Authentication authentication) throws IOException  {
    // write your JSON here, directly to the HttpServletResponse
 }

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