【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; }