springsecurity跨域鉴权
时间: 2023-10-21 09:04:58 浏览: 180
springboot+security+mybatis+redis+jwt,鉴权框架搭建
5星 · 资源好评率100%
在使用 Spring Security 进行跨域鉴权时,可以采取以下步骤:
1. 在 Spring Security 配置类中,添加跨域配置。可以通过 `CorsConfigurationSource` 接口来定义跨域配置,如下所示:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// 其他配置
http.cors().and().authorizeRequests()
.antMatchers("/api/**").authenticated()
// 其他配置
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("http://example.com"));
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE"));
configuration.setAllowedHeaders(Arrays.asList("Content-Type", "Authorization"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
```
2. 在前端请求中,需要设置跨域请求的头部信息。在发送跨域请求时,需要添加 `Origin`、`Access-Control-Request-Method` 和 `Access-Control-Request-Headers` 头部信息。例如,可以使用 axios 发送跨域请求的示例代码如下:
```javascript
axios({
method: 'get',
url: 'http://example.com/api/resource',
headers: {
'Origin': 'http://example.com',
'Access-Control-Request-Method': 'GET',
'Access-Control-Request-Headers': 'Content-Type, Authorization'
},
withCredentials: true // 如果需要发送认证信息,需要将 withCredentials 设置为 true
}).then(response => {
// 处理响应
}).catch(error => {
// 处理错误
});
```
阅读全文