import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.web.client.RestTemplate;
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
@LoadBalanced // 开启负载均衡
public RestTemplate restTemplate() {
return new RestTemplate();
}
// 配置安全策略
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable() // 禁用CSRF保护
.authorizeRequests()
.anyRequest().authenticated() // 所有请求需要鉴权
.and()
.httpBasic(); // 使用基本认证
}
}
这段代码演示了如何在Spring Cloud微服务中使用Spring Security来实现统一的鉴权。它创建了一个RestTemplate Bean,并且通过@LoadBalanced
注解开启了负载均衡,以便服务之间可以通过负载均衡的服务ID相互调用。同时,它配置了HttpSecurity来定义安全策略,禁用了CSRF保护,并要求所有请求必须进行鉴权。