gpt4 book ai didi

java - Spring MVC + security + OAuth2 userInfoEndpoint() 不起作用

转载 作者:行者123 更新时间:2023-12-01 17:35:54 25 4
gpt4 key购买 nike

我正在尝试以 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);
}

}

最佳答案

您可以尝试在 SecurityConfig.java 中更改如下顺序吗:

@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.oauth2Login()
.userInfoEndpoint()
.userService(customOAuth2UserService)
.and()
.authorizeRequests()
.antMatchers("/*").permitAll()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/")
.and()
.successHandler(new SuccessHandler());
}

因为下面的代码允许所有 URL,因此 oauth2Login() 代码永远无法访问。

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

关于java - Spring MVC + security + OAuth2 userInfoEndpoint() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61042122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com