gpt4 book ai didi

java - 在 Spring Boot 中使用 token 保护 api

转载 作者:太空宇宙 更新时间:2023-11-04 09:44:38 25 4
gpt4 key购买 nike

我们有一个简单的应用程序,只有两个消费者和 5 个端点。对于一个端点,我需要某种身份验证方式。我喜欢这样做的条纹方式,但我不知道如何在 Spring Boot 中构建它。

“对 API 的身份验证是通过 HTTP 基本身份验证执行的。提供您的 API key 作为基本身份验证用户名值。您不需要提供密码。”

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/qr")
.hasRole("user")
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.httpBasic()
.and()
.csrf()
.disable();
}

@Bean
public UserDetailsService userDetailsService() {
val encodedPassword = new BCryptPasswordEncoder().encode("test");

final InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(User.withUsername("admin").password(encodedPassword).roles("user").build());
//manager.createUser(User.withUsername("admin").roles("user").build());

return manager;
}

@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}

我尝试从 manager.createUser 中删除密码,但这不起作用。

最佳答案

基本身份验证由 Base64 编码形式的 user:password 组成。因此,您的用户必须拥有等于空字符串的密码才能使基本身份验证发挥作用。您还可以摆脱 BCryptPasswordEncoder 并使用 NoOpPasswordEncoder因为您不使用密码值。

关于java - 在 Spring Boot 中使用 token 保护 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55572495/

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