【java】使用 starter 的方式在 SpringBoot 中整合 Shiro

一开始跟着官方文档走, 就不吐槽官方文档使用的先进版本 1.5.0-SNAPSHOT 在 maven 仓库里压根就不存在这事了。我用的事 maven 里最新的版本。 SpringBoot用的是 2.2.2-release

 <dependency>
      <groupId>org.apache.shiro</groupId>
     <artifactId>shiro-spring-boot-starter</artifactId>
     <version>1.4.2</version>
</dependency>

 

官方文档:Integrating Apache Shiro into Spring-Boot Applications

跟着官方文档走完,自定义一个Realm 之后跑起来,遇到个憨憨的报错 No SecurityManager to calling xxxxxxx, 根据报错信息就是没有 SecurityManager 呗, 于是我就 @Bean 注入了一个 SecurityManager。结果提示是有一个 SecurityManager 了。 当时我就

 

折腾了很多,最后还是得用非starter的注入方式, 在官方文档的基础上注入下面两个 Bean 就跑起来了

    @Bean
    public DefaultWebSecurityManager securityManager() {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(realm());
        return securityManager;
    }

    @Bean(name = "shiroFilter")
    public ShiroFilterFactoryBean shiroFilterFactoryBean(DefaultWebSecurityManager securityManager) {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        shiroFilterFactoryBean.setSecurityManager(securityManager);
        return shiroFilterFactoryBean;
    }
posted @ 2019-12-28 15:24  早起的虫儿去吃鸟  阅读(831)  评论(0编辑  收藏  举报