关于shiro的基本知识,以前的文章介绍过了,不再重复。直接上springboot+thymeleaf+shiro的集成代码。是我在项目中实际使用的,亲测可用。
1,引入依赖
注意版本,我的springboot是2.1.1.RELEASE
org.apache.shiro shiro-all 1.2.5com.github.theborakompanioni thymeleaf-extras-shiro 2.0.0
2,shiro配置
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;import org.apache.shiro.web.mgt.DefaultWebSecurityManager;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.apache.shiro.mgt.SecurityManager;import java.util.LinkedHashMap;import java.util.Map;import at.pollux.thymeleaf.shiro.dialect.ShiroDialect;@Configurationpublic class ShiroConfig { @Bean public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); // 必须设置 SecurityManager shiroFilterFactoryBean.setSecurityManager(securityManager); // setLoginUrl 如未登录,跳到登录页。如果不设置值,默认会自动寻找Web工程根目录下的"/login.jsp"页面 或 "/login" 映射 shiroFilterFactoryBean.setLoginUrl("/notLogin"); // 登录成功后的首页 shiroFilterFactoryBean.setSuccessUrl("/index"); // 设置无权限时跳转的 url; shiroFilterFactoryBean.setUnauthorizedUrl("/notRole"); // 设置拦截器 Map filterChainDefinitionMap = new LinkedHashMap<>(); // 静态资源获取,放开权限 filterChainDefinitionMap.put("/static/**