针对“Java SpringBoot整合shiro-spring-boot-starterqi项目报错解决”的问题,我们可以按照以下步骤进行解决:
1. 引入shiro-spring-boot-starter
在pom.xml中加入以下依赖配置
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring-boot-starter</artifactId>
<version>1.4.1</version>
</dependency>
2. 配置shiro
在application.yml文件中对shiro进行配置,以下为配置示例:
shiro:
#使用的缓存
cache-manager: org.apache.shiro.cache.MemoryConstrainedCacheManager
#失败重试时的次数(只有在缓存中存在时使用)
cache-retry-limit: 100
#Realm(使用默认的)
realm-class: org.apache.shiro.realm.text.IniRealm
#登录地址(使用默认的)
login-url: /login
#未授权地址(使用默认的)
unauthorized-url: /unauthorized
#过滤器链(按照名称自动注入)
filter-chain-definition-map:
#匿名访问(不需要登录)
/anonymous/**: anon
#拥有user角色的可以访问
/user/**: user
#拥有admin角色的可以访问
/admin/**: roles[admin]
#需要登录才能访问
/**: authc
3. 配置缓存
在SpringBootApplication类上添加@EnableCaching注解,并在CacheConfig中配置缓存的名称、过期时间等信息,以下为配置示例:
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
List<Cache> caches = new ArrayList<>();
caches.add(new ConcurrentMapCache("defaultCache", false));
caches.add(new ConcurrentMapCache("sessions", false));
cacheManager.setCaches(caches);
return cacheManager;
}
}
4. 报错解决
如果项目中出现以下错误:
NoSecurityManagerException: No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.ThreadContext or as a vm static singleton. This is an invalid application configuration.
则需要添加如下配置:
@Configuration
public class ShiroConfiguration {
//配置使用的安全管理器
@Bean
public SecurityManager securityManager() {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
//设置realm
//securityManager.setRealm(myShiroRealm());
return securityManager;
}
//配置realm
@Bean
public MyShiroRealm myShiroRealm() {
return new MyShiroRealm();
}
}
其中MyShiroRealm是自定义的Realm,如下为示例:
public class MyShiroRealm extends AuthorizingRealm {
private final static String REALM_NAME = "MyShiroRealm";
//认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
//TODO
}
//授权
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
//TODO
}
}
以上便是Java SpringBoot整合shiro-spring-boot-starterqi项目报错解决的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java SpringBoot整合shiro-spring-boot-starterqi项目报错解决 - Python技术站