Shiro配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
@Configuration
public class ShiroConfig {
// 创建web安全管理器
@Bean
public DefaultWebSecurityManager getDefaultWebSecurityManager(CustomRealm realm) {
DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
// 设置自定义Realm
defaultWebSecurityManager.setRealm(realm);
return defaultWebSecurityManager;
}
// 配置url过滤器
@Bean
public ShiroFilterChainDefinition shiroFilterChainDefinition() {
DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
// 静态资源直接访问
chainDefinition.addPathDefinition("/*.html","anon");
chainDefinition.addPathDefinition("/css/*","anon");
chainDefinition.addPathDefinition("/js/*","anon");
chainDefinition.addPathDefinition("/img/*","anon");
//
// // 登录注册页直接访问
chainDefinition.addPathDefinition("/user/*", "anon");
//
// // 只有登录或者勾选记住密码的用户才能访问
chainDefinition.addPathDefinition("/**", "authc");

return chainDefinition;
}


// 前后端分离,解决跨域请求过滤器,
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
// #允许向该服务器提交请求的URI,*表示全部允许,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin
config.addAllowedOrigin("*");
// #允许访问的头信息,*表示全部
config.addAllowedHeader("*");
// 允许提交请求的方法,*表示全部允许
config.addAllowedMethod("*");
// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
config.setMaxAge(18000L);
// 允许cookies跨域
config.setAllowCredentials(true);

source.registerCorsConfiguration("/**", config);

FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
// 设置监听器的优先级,设置最高
bean.setOrder(0);

return bean;
}
}

__END__

三国小梦
文章作者:三国小梦
文章出处spring boot 整合shiro 前后端分离跨域请求配置
作者签名:简单地活着, 肆意又精彩.
关于主题Hexo - Live For Code
版权声明:文章除特别声明外,均采用 BY-NC-SA 许可协议,转载请注明出处