Java SpringBoot整合shiro-spring-boot-starterqi项目报错解决

针对“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技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • SpringBoot+slf4j实现全链路调用日志跟踪的方法(一)

    SpringBoot+slf4j实现全链路调用日志跟踪的方法(一) 在分布式系统中,日志跟踪是非常重要的,它可以帮助我们快速定位问题,提高系统的可维护性和可靠性。本文将详细讲解如何使用SpringBoot和slf4j实现全链路调用日志跟踪,包括以下内容: 日志跟踪的基本概念 SpringBoot中的日志跟踪实现方法 示例一:使用MDC实现日志跟踪 示例二:使…

    Java 2023年5月15日
    00
  • python 利用pyttsx3文字转语音过程详解

    下面我就为大家详细讲解一下如何使用Python中的pyttsx3库将文字转换为语音。 什么是pyttsx3? pyttsx3是Python中的文字转语音库,其能够实现文字向语音的转换。 安装pyttsx3 在使用pyttsx3之前,需要先进行安装。可以使用以下命令进行安装: pip install pyttsx3 使用示例 示例1:最简单的使用pyttsx3…

    Java 2023年6月15日
    00
  • 一文带你掌握Java中Scanner类的使用

    一文带你掌握Java中Scanner类的使用 Scanner类是Java中很常用的一个类,它可以读取用户在控制台上的输入数据。在处理用户输入数据的时候,使用Scanner类可以大大简化代码,并且提高开发效率。本文将详细介绍Scanner类的使用方法,包括Scanner类的创建、读取不同数据类型、异常处理等内容,希望能帮助Java初学者快速掌握Scanner类…

    Java 2023年5月26日
    00
  • java操作oracle数据库示例

    以下是 Java 操作 Oracle 数据库的完整攻略: 环境 在开始之前,需要确定自己的开发环境中是否已经安装好 JDK 和 Oracle 数据库,并且已经配置好了相应的环境变量。如果没有,请先安装和配置好相应的软件和环境。 另外,如果需要在Java中操作Oracle数据库,还需要下载安装 ojdbc 驱动程序,将其放置于项目根目录下或指定的lib目录下。…

    Java 2023年5月19日
    00
  • Java中分割字符串的两种方法实例详解

    Java中分割字符串的两种方法实例详解 在Java中,经常需要对字符串进行分割操作,比如将字符串按照某个字符或者字符串进行分割,或者按照正则表达式进行分割。本文将对Java中常用的两种分割字符串的方法进行详细讲解。 方法一:使用String的split方法 String类的split方法可以将字符串按照指定的字符串或正则表达式进行分割,其语法如下: publ…

    Java 2023年5月26日
    00
  • Maven 多模块父子工程的实现(含Spring Boot示例)

    首先,需要了解什么是 Maven 多模块工程。Maven 是一款构建工具,对于大型项目来说,通常需要拆分为多个模块来管理,这些模块之间可能存在依赖关系,这时候就可以使用 Maven 的多模块工程来管理这些模块。 Maven 多模块工程通常会分为两种类型:聚合项目和继承项目。聚合项目指的是父项目与子项目并列存在于同一级目录下,而继承项目则指的是父项目和子项目分…

    Java 2023年5月19日
    00
  • jsp页面中如何将时间戳字符串格式化为时间标签

    在 JSP 页面中使用时间戳字符串,需要进行格式化为时间标签。下面是如何将时间戳字符串格式化为时间标签的完整攻略。 步骤1:导入时间函数库 首先,需要引入 JSP 内置的时间函数库,以便使用日期和时间相关的函数。 <%@ page import="java.text.SimpleDateFormat" %> <%@ pa…

    Java 2023年6月15日
    00
  • 详解SpringMVC加载配置Properties文件的几种方式

    当我们在SpringMVC项目中需要加载配置文件时,通常会使用Properties文件来存储配置信息。本文将介绍几种在SpringMVC中加载Properties文件的方式。 方式一:使用@PropertySource注解 我们可以使用@PropertySource注解来加载Properties文件。在SpringMVC中,我们可以在配置类中使用该注解来指定…

    Java 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部