gpt4 book ai didi

spring-boot - 为什么 OAuth2UserService 没有在 WebSecurityConfigurerAdapter 下的 Spring Boot 中运行角色授权?

转载 作者:行者123 更新时间:2023-12-05 06:07:35 30 4
gpt4 key购买 nike

我正在尝试通过遵循 Spring Security's documentation 来使用 Spring Security 实现角色,但我无法运行 OAuth2UserService。

这是我拥有的配置文件和 OAuth2UserService,它遵循他们的文档。终端打印 ABC,但不打印 DEF,因此当我转到页面“/test”时它没有运行,例如。我将 Google Identity 与 OAuth2 结合使用。

身份验证有效,但不幸的是这不起作用。我也尝试过使用 GrantedAuthoritesMapper 和许多其他示例,但同样的事情发生了。

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.logout(l -> {
l.logoutSuccessUrl("/").permitAll();})
.authorizeRequests(a -> a
.antMatchers("/", "/js/**", "/css/**").permitAll()
.antMatchers("/test").hasRole("ADMIN")
.anyRequest().authenticated()
)
.csrf(c -> c
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
)
.oauth2Login(oauth2 -> oauth2
.userInfoEndpoint(userInfo -> userInfo
.userService(this.oauth2UserService()
))
);
}

private OAuth2UserService<OAuth2UserRequest, OAuth2User> oauth2UserService() {
final DefaultOAuth2UserService delegate = new DefaultOAuth2UserService();
System.out.println("ABC");

return (userRequest) -> {
System.out.println("DEF");
OAuth2User oauth2User = delegate.loadUser(userRequest);
Set<GrantedAuthority> mappedAuthorities = new HashSet<>();

mappedAuthorities.add(new SimpleGrantedAuthority("ROLE_ADMIN"));

oauth2User = new DefaultOAuth2User(mappedAuthorities,
oauth2User.getAttributes(), oauth2User.getName());
return oauth2User;
};
}

任何帮助将不胜感激。谢谢。

最佳答案

如果您还没有找到答案,我的问题已通过将作用域添加到 application.properties 文件来解决。

spring.security.oauth2.client.registration.google.scope=profile,email

关于spring-boot - 为什么 OAuth2UserService 没有在 WebSecurityConfigurerAdapter 下的 Spring Boot 中运行角色授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65387791/

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