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

yizhihongxing

针对“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日

相关文章

  • 常见JavaWeb安全问题和解决方案

    常见JavaWeb安全问题和解决方案 引言 JavaWeb应用的普及使其突显出越来越多的安全威胁。在开发JavaWeb应用时,我们需要考虑如何确保安全才能更好地保护用户个人信息和应用程序数据。本攻略为您提供了一些常见的JavaWeb安全问题和解决方案,希望对您有所帮助。 常见JavaWeb安全问题 SQL注入 SQL注入是一种常见的安全威胁,攻击者可以利用这…

    Java 2023年5月27日
    00
  • Java Development Kit (JDK) 安装及环境配置方法

    下面给出完整的Java Development Kit (JDK)安装及环境配置方法攻略,包含以下具体内容: JDK的安装方法 访问Oracle官网下载JDK安装文件,下载地址为:https://www.oracle.com/java/technologies/javase-downloads.html 根据自己操作系统版本选择相应的JDK安装文件并下载,建…

    Java 2023年5月26日
    00
  • 详解http请求中的Content-Type

    下面是关于“详解HTTP请求中的Content-Type”的完整攻略: 什么是Content-Type? 在HTTP请求中,Content-Type是一个HTTP头部字段,用于描述HTTP请求或响应中实际的内容类型。Content-Type的值是由MIME规范定义的。 Content-Type有哪些常见的类型? Content-Type有很多种类型,这里列举…

    Java 2023年6月15日
    00
  • log4j2日志异步打印(实例讲解)

    当应用程序运行时,日志是一项重要的组成部分,可用于debug、性能分析等。然而,日志的打印也会降低应用程序的性能。这就是为什么使用异步日志打印器的原因。 log4j2是一个广泛使用的Java日志框架,它支持异步日志打印。在本文中,我们将介绍log4j2的异步日志打印机制,并提供示例代码。 异步日志打印机制 与传统的同步日志打印机制不同,异步日志打印机制可以在…

    Java 2023年5月26日
    00
  • Java工具类BeanUtils库介绍及实例详解

    Java工具类BeanUtils库介绍及实例详解 什么是BeanUtils BeanUtils 是 Apache 组织下的一个开源 Java 工具类库,它提供了一个简单的 API,以便应用开发人员能够快速地使用反射方式实现 JavaBean 的属性拷贝、生成新对象等操作,尤其适用于对象之间属性值的复制,使得开发者无需编写繁琐的属性赋值代码。BeanUtils…

    Java 2023年5月26日
    00
  • 如何安装java的运行环境IDEA

    安装Java的运行环境(JRE)是使用IntelliJ IDEA的前提条件。在安装IDEA之前,用户需要先安装JRE。以下是完整的安装JRE以及IntelliJ IDEA的攻略: 1. 安装Java的运行环境(JRE) Windows系统 打开Oracle Java SE下载页面。 在“Java SE 15及后续版本”下,单击“JDK下载”。 接受许可协议并…

    Java 2023年5月26日
    00
  • JavaWeb学习笔记分享(必看篇)

    JavaWeb学习笔记分享(必看篇) 前言 JavaWeb是Java在Web领域的应用,是目前非常热门的技术之一。但是JavaWeb涉及到的技术非常广泛,初学者很容易迷失方向。本文总结了JavaWeb的基础知识,为初学者提供了一份学习笔记分享,希望能够帮助大家快速入门。 JavaWeb基础知识 1. 了解Web应用程序的组成部分 一个Web应用程序由客户端、…

    Java 2023年5月26日
    00
  • 深入了解Java中的static关键字

    深入了解Java中的static关键字 在Java中,static是一个用于修饰变量、方法和内部类等的关键字。它表示这些成员属于类本身,而不是类的实例,因此,我们可以直接通过类名来调用这些成员,无需先实例化对象。 static变量 在Java中,静态变量是共享的、存储在堆区的变量。即,无论创建多少实例对象,它们都只有一个拷贝。我们可以通过类名加点的形式进行直…

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