Shiro 内置过滤器,可以实现权限相关的拦截器
常用的过滤器:
- anon:无需认证(登录)可以访问
- authc:必须认证才可以访问
- user:如果使用rememberMe的功能可以直接访问
- perms:该资源必须得到资源权限才可以访问
- role:该资源必须得到角色的权限才可以访问
放行静态资源的方式有两种:
- yml配置文件
shiro:
hash-algorithm-name: md5
hash-iterations: 2
anon-urls:
- 放行的静态资源1
- 放行的静态资源2
login-url: /index.html
log-out-url: /login/logout*
# authc-ulrs:
# - 需要认证才能访问的静态资源
- 配置Configuration类
@Bean(SHIRO_FILTER)
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
// 设置安全管理器
factoryBean.setSecurityManager(securityManager);
// 设置未登陆的时要跳转的页面
factoryBean.setLoginUrl(loginUrl);
Map<String, String> filterChainDefinitionMap = new HashMap<>();
// 设置放行的路径
if (anonUrls != null && anonUrls.length > 0) {
for (String anon : anonUrls) {
filterChainDefinitionMap.put(anon, "anon");
}
}
// 设置登出的路径
if (null != logOutUrl) {
filterChainDefinitionMap.put(logOutUrl, "logout");
}
// 设置拦截的路径
if (authcUlrs != null && authcUlrs.length > 0) {
for (String authc : authcUlrs) {
filterChainDefinitionMap.put(authc, "authc");
}
}
// 静态资源放行
filterChainDefinitionMap.put("/static/**", "anon");
filterChainDefinitionMap.put("/css/**","anon");
filterChainDefinitionMap.put("/layui/**","anon");
//配置过滤器
factoryBean.setFilters(filters);
factoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
return factoryBean;
}
注意的是,Configuration配置类会先读取yml配置文件的相对应的属性
本文介绍了Apache Shiro框架中如何配置过滤器来放行静态资源。重点讲解了 anon, authc, user, perms 和 role 过滤器的作用,并详细说明了通过yml配置文件和自定义Configuration类两种方式实现静态资源的访问控制。同时指出,Configuration配置类会优先加载yml配置的相应属性。"
79991354,7243104,使用Vue构建视频播放列表实战,"['前端开发', 'Vue', 'JavaScript', '数据传递', '组件化']
1505

被折叠的 条评论
为什么被折叠?



