Я пытаюсь войти в систему как Spring MVC + security + OAuth2.
Текущий статус аутентификации успешно получен и информация о пользователе может быть получена.
Я хочу получить пользователя поэтому я пишу userInfoEndpoint
, но userInfoEndPoint
вообще не вызывается.
С другой стороны, successHandler
успешно вызывается, и аутентификация содержит информацию о пользователе.
Итак У меня два вопроса
Во-первых, почему вообще не вызывается userInfoEndpoint
? В случае Spring Boot он успешно называется
Во-вторых, как получить информацию о пользователе из аутентификации successHandler
? Аутентификация successHandler
имеет только этот метод.
Object getCredentials();
Object getDetails();
Object getPrincipal();
boolean isAuthenticated();
void setAuthenticated(boolean var1) throws IllegalArgumentException;
- Исходный код -
SecurityConfig. java
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/*").permitAll()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/")
.and()
.oauth2Login()
.userInfoEndpoint()
.userService(customOAuth2UserService)
.and()
.successHandler(new SuccessHandler());
}
SuccessHandler. java
@Log4j
public class SuccessHandler implements AuthenticationSuccessHandler {
@Override
public void onAuthenticationSuccess(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Authentication authentication) throws IOException, ServletException {
log.info(authentication);
}
}