ShiroFilterFactoryBean用法?
ShiroFilterFactoryBean
是 Apache Shiro 在 Spring Boot 中的一个组件,用于创建和配置 Shiro 的过滤器。它允许你定义哪些请求需要被保护,以及如何保护这些请求。
以下是一个基本的使用示例:
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
@Configuration
public class ShiroConfig {
@Bean
public ShiroFilterFactoryBean shiroFilter(DefaultWebSecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
// 必须设置 SecurityManager
shiroFilter.setSecurityManager(securityManager);
// 设置无权限时跳转的 url
shiroFilter.setUnauthorizedUrl("/unauthorized");
/*
* 定义 shiro 过滤链 Map 结构
* Map 中 key(xml或json取节点,或url) 的第一个 '/' 代表的路径是相对于根路径的
* anon: 所有 url 都都可以匿名访问
* authc: 需要认证才能进行访问
* user: 配置记住我或认证通过可以访问
*/
Map<String, String> filterMap = new LinkedHashMap<>();
filterMap.put("/login", "anon");
filterMap.put("/logout", "logout");
filterMap.put("/**", "authc");
shiroFilter.setFilterChainDefinitionMap(filterMap);
return shiroFilter;
}
}
在上述代码中,我们首先创建了一个 ShiroFilterFactoryBean
实例并设置了其 SecurityManager
。然后,我们配置了没有权限时要跳转的URL,以及一个过滤器链定义映射。
这个映射定义了哪些URL需要被保护,以及如何保护它们。例如,在上述代码中,所有的URL都需要通过认证才能访问(除了 /login
和 /logout
)。anon
表示匿