spring-boot 相关问题

Spring Boot可以轻松创建Spring驱动的生产级应用程序和服务,并且可以轻松实现。它采用了Spring平台的观点,以便新用户和现有用户可以快速获得他们需要的位。

无法让swagger2显示swagger-ui.html

问题 我正在学习 java spring boot,我的问题是从 http://localhost:8080/swagger-ui.html#/ 加载 swagger 前端 我收到控制台消息如下: 警告 23432 --- [nio-

回答 2 投票 0

运行 SSM 文档时,Systemd 服务单元无法访问 Ubuntu 中的 Jarfile

我正在开发一个项目,需要使用 SSM 文档将 Spring Boot 应用程序 Pet Clinic 安装到 Ubuntu 22 服务器上。我已附上 Systems Manager 运行文档。错误是...

回答 1 投票 0

Spring boot升级3.1.11到3.2.5 org.hibernate.query.SemanticException日期转换

我收到此错误,这是因为日期中的 -60 和 -(0.5/24) 。有没有不同的方法来做到这一点,因此它在这个新版本的休眠中是等效的?我们正在使用Oracle数据库 操作数...

回答 1 投票 0

如何将两个.pem导入到单个.p12密钥库中?

我有两个pem格式的证书: Let's Encrypt 的服务器 SSL 证书 来自 MongoDB atlas 的登录证书(证书+私钥) 当两者都导入到单个密钥库时,mongo 驱动程序会抛出: com.mongodb.

回答 1 投票 0

创建动态oracle数据源后Springboot创建bean DataSourceConfiguration时出错

我将从 1.5.1 升级到 Springboot 3.2.4。源代码正在编译,但我在运行时遇到了一个小问题。在使用 1.5.1 时,我能够创建多个 Oracle 数据源 bean 并使用

回答 1 投票 0

带有自定义登录页面的 Spring Security 6 中的错误 405

包com.scm.configurations; 导入 org.springframework.context.annotation.Bean; 导入 org.springframework.context.annotation.Configuration; 导入 org.springframework.security.authentication.

回答 1 投票 0

我可以在 Eclipse Spring Boot Dashoard 中指定 Maven 配置文件来通过运行配置更改依赖项吗?

我有一个 Spring Boot Maven Web 应用程序 (app.war),它依赖于库 lib.jar。 lib.jar 发布时带有两个分类器: lib-release.jar 被 proguard 混淆 lib-debu...

回答 1 投票 0

Spring Boot 配置值带有 .no。或没有。未填充

我有一个非常简单的 Spring Boot 应用程序,具有特定于国家/地区的配置属性,所有已知且简单的东西,没有什么特别的。 它应该在 DK、SE、FI 和 NO 4 个国家/地区工作。注射这些正确的...

回答 1 投票 0

从 RestTemplate 迁移到 WebFlux

我有这个 RestTemplate,我想将其迁移到 WebFlux 客户端: RestTemplaterestTemplate = new RestTemplate(); 字符串 url = "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml&...

回答 1 投票 0

使用 hibernate-core 6.4.4.final 查询将进入无限循环

我有以下实体,它在 Spring boot 2.5.14 和 Hibernate 5.6.10.final 中工作得非常好。我们正在将应用程序升级到最新的 Spring boot 3.2.3 和 Hibernate 6.6.4.final。 @实体 @

回答 1 投票 0

当我在代码中使用 thymeleaf 并将标头代码替换为单独的文件时,然后不显示标头选项卡

我正在学习 Spring Boot 并在我的项目中使用 Thymeleaf。当我将标头代码替换为同一文件夹中的单独文件并使用 Thymeleaf 的替换语法、CSS、JS 和 Bootstrap 代码时...

回答 1 投票 0

Spring Boot 测试 - 断言启动的 Spring 应用程序上下文的最大数量

我使用@SpringBootTest进行了多个集成测试。 在某些情况下,Spring Boot 通过执行这些集成测试来启动多个应用程序上下文(例如,由于使用 @MockBean 和 @Spy...

回答 1 投票 0


我无法获得授权,我需要注册

导入java.util.可选; 导入 org.springframework.data.jpa.repository.JpaRepository; 导入 com.example.secure.models.User; 公共接口 UserRepository 扩展了 JpaRepository import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import com.example.secure.models.User; public interface UserRepository extends JpaRepository<User,Integer>{ Optional<User> findAppUserByUsername(String username); } import com.example.secure.repository.UserRepository; import com.example.secure.models.User; import org.springframework.stereotype.Service; @Service public class UserDetailsServiceImpl implements UserDetailsService { private final UserRepository appUserRepository; public UserDetailsServiceImpl(UserRepository appUserRepository) { this.appUserRepository = appUserRepository; } @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { User user = appUserRepository .findAppUserByUsername(username) .orElseThrow(() -> new UsernameNotFoundException("Not found")); return org.springframework.security.core.userdetails.User.withUsername(user.getUsername()) .password(user.getPassword()) .roles(user.getAuthority()) .build(); } } @Entity public class User{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String username; private String password; private String authority; //constructors setters and getters } import java.util.Collection; import java.util.List; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; public class UserAdapter implements UserDetails { private User user; public UserAdapter(User user){ this.user=user; } @Override public Collection<? extends GrantedAuthority> getAuthorities() { return List.of(new SimpleGrantedAuthority(user.getAuthority())); } @Override public String getPassword() { return user.getPassword(); } @Override public String getUsername() { return user.getUsername(); } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; } } import com.example.secure.models.User; import com.example.secure.repository.UserRepository; @RestController public class SecurityController { private final UserRepository repo; private final PasswordEncoder passwordEncoder; public SecurityController(UserRepository repo, PasswordEncoder passwordEncoder) { this.repo = repo; this.passwordEncoder = passwordEncoder; } @PostMapping(path = "/register") public String register(@RequestBody RegistrationRequest request) { User user = new User(); System.out.println("Controller started"); user.setUsername(request.username()); user.setPassword(passwordEncoder.encode(request.password())); user.setAuthority(request.authority()); System.out.println(user.toString()); repo.save(user); System.out.println("Controller ended"); return "New user successfully registered"; } @GetMapping(path = "/test") public String test() { return "Access to '/test' granted"; } record RegistrationRequest(String username, String password, String authority) { } } import com.example.secure.service.UserDetailsServiceImpl; @Configuration @EnableWebSecurity(debug = true) public class SecurityConfig { private UserDetailsServiceImpl userDetailsService; public SecurityConfig(UserDetailsServiceImpl userDetailsService) { this.userDetailsService = userDetailsService; } @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .csrf(configurer -> configurer.disable()) .authorizeHttpRequests(auth -> auth .requestMatchers(HttpMethod.GET, "/test").hasAuthority("ROLE_USER") .requestMatchers(HttpMethod.POST, "/register").permitAll() .anyRequest().denyAll()) .httpBasic(Customizer.withDefaults()) .userDetailsService(userDetailsService); return http.build(); } @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } } 以上是我的项目相关的Spring Security代码,当我尝试使用Postman访问端点时,该代码不起作用。当我从 Postman 调用“est”端点时,会从数据库中获取详细信息,但我无法访问该端点。我收到 401 状态代码,如图所示。来自邮递员的 401 状态代码显示响应标头的图像 我从过去两天开始尝试,但无法得到它。 我预计问题是什么以及如何解决。 您有 UserAdapter 类,但实现不完整。请使用以下 UserAdapter 类。 loadUserByUsername():这个抽象方法将返回 UserDetails 类实例,这就是为什么我们必须使用 UserAdapter 类来实现 UserDetails public class UserAdapter implements UserDetails { private String username; private String password; private List<GrantedAuthority> authorities; public UserAdapter(User user){ this.username = user.getUsername(); this.password = user.getPassword(); this.authorities = Stream.of(user.getAuthority().split(",")).map(SimpleGrantedAuthority::new).collect( Collectors.toList()); } @Override public Collection<? extends GrantedAuthority> getAuthorities() { return this.authorities; } @Override public String getPassword() { return this.password; } @Override public String getUsername() { return this.username; } @Override public boolean isAccountNonExpired() { return false; } @Override public boolean isAccountNonLocked() { return false; } @Override public boolean isCredentialsNonExpired() { return false; } @Override public boolean isEnabled() { return false; } } 接下来创建一个单独的类并实现 AuthenticationProvider,因此此实现将帮助提供商管理器识别此客户身份验证 @Component public class CustomizeAuthProvider implements AuthenticationProvider { private final UserDetailsService userDetailsService; public CustomizeAuthProvider(UserDetailsService userDetailsService) { this.userDetailsService = userDetailsService; } @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { try{ UserDetails userDetails = userDetailsService.loadUserByUsername(authentication.getName()); return new UsernamePasswordAuthenticationToken(userDetails.getUsername(),userDetails.getPassword(),userDetails.getAuthorities()); }catch (UsernameNotFoundException e){ throw new BadCredentialsException("Credentials is invalid"); } } @Override public boolean supports(Class<?> authentication) { return UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication); } } 替换 UserDetailsServiceImpl 类中的 loadUserByserName 方法 @Override public UserAdapter loadUserByUsername(String username) throws UsernameNotFoundException { Optional<User> user = appUserRepository.findAppUserByUsername(username); return user.map(UserAdapter::new).orElseThrow(()->new UsernameNotFoundException("Not found")); } 还用以下代码更新 securityConfig 方法 @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.csrf(AbstractHttpConfigurer::disable) .authorizeHttpRequests(auth -> auth .requestMatchers(HttpMethod.GET, "/test").hasAuthority("ROLE_USER") .requestMatchers(HttpMethod.POST, "/register").permitAll() .anyRequest().denyAll()) .httpBasic(Customizer.withDefaults()) //here we are providing customer authentication provider .authenticationProvider(authenticationProvider) .userDetailsService(userDetailsService); return http.build(); } 希望这对您有帮助

回答 1 投票 0

Spring Boot Rest - 如何将标头映射到 DTO

我正在使用 Spring Boot,需要从请求标头访问多个值,问题是 @RequestHeader 它一次只接受一个属性。而不是声明个人

回答 1 投票 0

尝试将 Map<Integer, List<Object>> 映射到 postgreSQL JPA 数据库

我正在尝试创建一个学生地图,键是周期编号,值是该周期的所有学生的列表。 学生对象被标记为实体。 @OneToMany(卡斯卡...

回答 1 投票 0

Spring WebFlux - 解码/解析“多部分/相关”请求支持

反应式堆栈 Web 框架 Spring WebFlux 提供了方便的客户端 MultipartBodyBuilder API 来准备与反应式 WebClient 一起使用的多部分请求的正文。 然而在

回答 1 投票 0

替代Kafka 3.6.2中的@EnableBinding和@StreamListener

我一直在致力于从 Spring 2.X 到 3.X 的迁移,我的旧代码在消费者中使用了 @EnableBinding(Sink::class) 和 @StreamListener(Sink.INPUT) 。两者都已被弃用并从...

回答 1 投票 0

Spring Boot Rest 控制器:返回默认错误 JSON

在我的 API 中,我喜欢保护用户详细信息端点,以便正常登录的用户只能访问他们的用户个人资料。因此我正在编写控制器: @RequestMapping(值 = URL_USER...

回答 2 投票 0

使用logback-spring.xml时如何从属性文件注入Logback loglevel

我正在使用 Spring Boot 和 logback-spring.xml。当前将 logback-spring.xml 中的日志级别定义为硬编码值。我需要从应用程序属性文件注入该值。 需要定义

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.