Files
intc-cloud/intc-gateway/src/main/java/com/intc/gateway/config/SecurityConfig.java
2025-01-15 22:06:44 +08:00

49 lines
1.9 KiB
Java

package com.intc.gateway.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
import org.springframework.security.config.web.server.ServerHttpSecurity;
import org.springframework.security.core.userdetails.MapReactiveUserDetailsService;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.server.SecurityWebFilterChain;
@Configuration
@EnableWebFluxSecurity
public class SecurityConfig {
@Value("${spring.security.user.name}")
private String name;
@Value("${spring.security.user.password}")
private String password;
@Bean
public MapReactiveUserDetailsService userDetailsService() {
UserDetails userWebFlux = User.withUsername(name).password(new BCryptPasswordEncoder().encode(password)).roles("admin").build();
return new MapReactiveUserDetailsService(userWebFlux);
}
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity httpSecurity){
httpSecurity
.authorizeExchange()
.pathMatchers("/actuator/**").hasRole("admin")
.anyExchange().permitAll()
.and()
.csrf()
.disable()
.cors()
.and()
.httpBasic();;
return httpSecurity.build();
}
}