首先贴上官网地址https://shiro.apache.org/spring-framework.html
一、shiro配置类
要使用shiro必须配置一个shiroConfig配置类,中shiro配置的类中需要三个bean:
- Realm,自定义的Realm
- DeaultWebSecurityManager,需要传递Realm参数
- ShiroFilterFactoryBean,需要传递DeaultWebSecurityManager参数
- 在ShiroFilterFactoryBean里面我们可以选择添加对应的过滤器
- anon : 无需认证,就可以访问
- authc : 必须认证,才能访问
- user : 必须拥有 “记住我”功能才能用
- perms : 拥有对某个资源的权限才能访问
- role : 拥有某个角色权限才能访问
- 在ShiroFilterFactoryBean里面我们可以选择添加对应的过滤器
@Configuration
public class ShiroConfig {
@Bean
public UserRealm userRealm(){
return new UserRealm();
}
@Bean
public DefaultWebSecurityManager defaultSecurityManager(@Qualifier("userRealm") UserRealm userRealm){
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(userRealm);
return securityManager;
}
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("defaultSecurityManager") DefaultWebSecurityManager SecurityManager){
ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
bean.setSecurityManager(SecurityManager);
//添加 Shiro 的内置过滤器=======================
/*
anon : 无需认证,就可以访问
authc : 必须认证,才能访问
user : 必须拥有 “记住我”功能才能用
perms : 拥有对某个资源的权限才能访问
role : 拥有某个角色权限才能访问
*/
Map<String, String> map = new LinkedHashMap<>();
map.put("/back/**","authc");
map.put("/front/**","anon");
// 设置 /user/addUser 这个请求,只有认证过才能访问
// map.put("/user/addUser","authc");
// map.put("/user/deleteUser","authc");
// 设置 /user/ 下面的所有请求,只有认证过才能访问
// map.put("/user/*","authc");
bean.setFilterChainDefinitionMap(map);
// 设置登录的请求
bean.setLoginUrl("/login");
//============================================
bean.setUnauthorizedUrl("/noPermission");
return bean;
}
//thymeleaf集成shiro
@Bean(name = "shiroDialect")
public ShiroDialect shiroDialect(){
return new ShiroDialect()