1. 在pom.xml文件中加入shiro的jar包
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.4.0</version>
</dependency>
2.创建shiro配置类
@Configuration
public class ShiroConfig {
@Bean(name = "shiroFilterBean")
public ShiroFilterFactoryBean getShiroFilterBean(@Qualifier("defaultWebSecurityManager")DefaultSecurityManager defaultSecurityManager){
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
//设置安全管理器
shiroFilterFactoryBean.setSecurityManager(defaultSecurityManager);
return shiroFilterFactoryBean;
}
@Bean(name = "defaultWebSecurityManager")
public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("employeeRealm")EmployeeRealm employeeRealm){
DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
defaultWebSecurityManager.setRealm(employeeRealm);
return defaultWebSecurityManager;
}
@Bean(name = "employeeRealm")
public EmployeeRealm getEmployeeRealm(){
return new EmployeeRealm();
}
}
3.在安全管理器中使用shiro内置过滤器对URL进行拦截
Map<String,String> map = new LinkedHashMap<>();
map.put("/url","authc");
map.put("/*","authc");
/**
* 被拦截之后默认跳转到login.jsp 设置默认跳转的页面(注意经过controller)
*/
shiroFilterFactoryBean.setLoginUrl("/login");
shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
其中,shiro内置过滤器拦截的级别为以下几种
anon:无需认证就可以访问
authc:必须认证才可以访问
user:如果使用rememberMe的功能可以直接访问
perms:该资源必须得到资源权限才可以访问
role:该资源必须得到角色权限才可以访问
4.此时所有请求都会被EmployeeRealm拦截