Java Spring Security. Информация о зарегистрированном пользователе - PullRequest
1 голос
/ 26 марта 2020

Я хочу улучшить приложение-задачу REST API. Я хочу добавить в конфигурацию безопасности, когда кто-то входит в систему, я хочу перенаправить его на конечную точку с его сгенерированным Utils userId. Я хочу достичь чего-то такого:

            .formLogin().defaultSuccessUrl("/users/(logged in our session userId)").permitAll()

1 Ответ

0 голосов
/ 26 марта 2020

вы можете сделать это, добавив несколько вещей:

в вашем методе настройки в WebSecurityConfigurerAdapter добавьте эту строку:

.formLogin().successHandler(mySuccessHandler())...

добавьте определение компонента, добавив

@Bean
public AuthenticationSuccessHandler mySuccessHandler(){
    return new MyCustomAuthenticationSuccessHandler();
}

затем вам нужно создать MyCustomAuthenticationSuccessHandler, который реализует AuthenticationSuccessHandler.

public class MyCustomAuthenticationSuccessHandler
  implements AuthenticationSuccessHandler {

    protected Log logger = LogFactory.getLog(this.getClass());

    private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();

    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, 
      HttpServletResponse response, Authentication authentication)
      throws IOException {

        handle(request, response, authentication);
    }

    protected void handle(
        HttpServletRequest request,
        HttpServletResponse response, 
        Authentication authentication
    ) throws IOException {

        String targetUrl = determineYourTargetUrl(request);

        if (response.isCommitted()) {
            logger.debug(
                "Response has already been committed. Unable to redirect to "
                        + targetUrl);
            return;
        }

        redirectStrategy.sendRedirect(request, response, targetUrl);
    }

    protected String determineYourTargetUrl(HttpServletRequest request) {
        return "users/" + request.getSession().getId();
    }


}

Надеюсь, что это поможет вам.

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