最近在由Spring Boot2.x构建的更简洁的后台管理系统,完美整合SpringMvc + Shiro + MybatisPlus + Beetl技术,项目开发完成会开源出来,希望能对大家学习道路上有所帮助。在这一篇中我将把我整合Shiro过程记录下来,希望对大家的学习这块能有所帮助。
maven依赖包
。
org.apache.shiro
shiro-spring
1.4.0
<!--shiro依赖和缓存-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
<version>1.4.0</version>
</dependency>
Shiro 配置类
/** * Shiro配置中心 * * @Auther: hrabbit * @Date: 2018-12-24 12:33 PM
@Description: */ @Configuration public class ShiroConfig {
/**
Shiro的过滤器链
*/
@Bean
public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager);/**
- 默认登录路径
*/
shiroFilter.setLoginUrl("/login");/**
- 登录成功后要跳转的链接
/
shiroFilter.setSuccessUrl("/");
/*- 没有权限的时候跳转页面
/
shiroFilter.setUnauthorizedUrl("/global/error");
/*- 配置shiro拦截器链
- anon 不需要认证
- authc 需要认证
- user 验证通过或RememberMe登录的都可以
- 当应用开启了rememberMe时,用户下次访问时可以是一个user,但不会是authc,因为authc是需要重新认证的
- 顺序从上到下,优先级依次降低
- api开头的接口,走rest api鉴权,不走shiro鉴权
*/
Map<String, String> hashMap = new LinkedHashMap<>();
hashMap.put("/static/", “anon”);
hashMap.put("/login", “anon”);
hashMap.put("/global/sessionError", “anon”);
hashMap.put("/", “user”);
shiroFilter.setFilterChainDefinitionMap(hashMap);
return shiroFilter;
}/**
- 凭证匹配器
- (由于我们的密码校验交给Shiro的SimpleAuthenticationInfo进行处理了
- )
- @return
*/
@Bean
public HashedCredentialsMatcher hashedCredentialsMatcher() {
HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCre