首页 > 编程 > Java > 正文

Spring Boot 整合 Shiro+Thymeleaf过程解析

2019-11-26 08:27:36
字体:
来源:转载
供稿:网友

这篇文章主要介绍了Spring Boot 整合 Shiro+Thymeleaf过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.导包

<!-- springboot 与 shiro 的集成--><dependency>  <groupId>org.apache.shiro</groupId>  <artifactId>shiro-spring</artifactId>  <version>1.4.1</version></dependency><!-- thymeleaf 与 shiro 集成--><dependency>  <groupId>com.github.theborakompanioni</groupId>  <artifactId>thymeleaf-extras-shiro</artifactId>  <version>2.0.0</version></dependency><dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-configuration-processor</artifactId>  <optional>true</optional></dependency><dependency>  <groupId>org.projectlombok</groupId>  <artifactId>lombok</artifactId>  <optional>true</optional></dependency>

2. 编写配置类

@Configuration@ConfigurationProperties(prefix = "shiro")@Datapublic class ShiroConfig {  private String loginUrl;  private String unauthorizedUrl;  private String successUrl;  private String logoutUrl;  private String[] anons;  private String[] authcs;  /**   * 配置securityManager   * @param userRealm   * @return   */  @Bean  public SecurityManager securityManager(UserRealm userRealm){    DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();    securityManager.setRealm(userRealm);    return securityManager;  }  /**   * 配置shiroFilter   * @param securityManager   * @return   */  @Bean  public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager){    ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();    shiroFilterFactoryBean.setSecurityManager(securityManager);    shiroFilterFactoryBean.setLoginUrl(loginUrl);    shiroFilterFactoryBean.setUnauthorizedUrl(unauthorizedUrl);    shiroFilterFactoryBean.setSuccessUrl(successUrl);    Map<String,String> filterMap = new HashMap<>();    if(null != logoutUrl){      filterMap.put(loginUrl,"logout");    }    if(anons!=null && anons.length>0){      for(String anon:anons){        filterMap.put(anon,"anon");      }    }    if(authcs!=null && authcs.length>0){      for(String authc:authcs){        filterMap.put(authc,"authc");      }    }    shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap);    return shiroFilterFactoryBean;  }  /**   * 配置自定义Realm   * @return   */  @Bean  public UserRealm userRealm(CredentialsMatcher credentialsMatcher){    UserRealm userRealm = new UserRealm();    userRealm.setCredentialsMatcher(credentialsMatcher);    return userRealm;  }  /**   * 配置凭证匹配器   * @return   */  @Bean  public HashedCredentialsMatcher hashedCredentialsMatcher(){    HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();    hashedCredentialsMatcher.setHashAlgorithmName("MD5");    hashedCredentialsMatcher.setHashIterations(10);    return hashedCredentialsMatcher;  }  /**   * 配置ShiroDialect,用于Thymeleaf和shiro标签的使用   * @return   */  @Bean  public ShiroDialect shiroDialect(){    return new ShiroDialect();  }}

3. application.yml 配置 拦截链

# shiroshiro: login-url: /login.html anons:  - /login.html  - /index.html  - doLogin authcs:  - /**

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表