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日

相关文章

  • Java中的同步与异步详细介绍

    Java中的同步与异步详细介绍 1. 同步 同步指的是在代码中有一个任务或操作正在进行时,它阻塞了其他任务或操作的执行,直到该任务或操作完成。在Java中,使用synchronized关键字实现同步。 1.1 synchronized关键字 synchronized关键字可以用于方法或代码块中,保证在同一时间只有一个线程可以访问这些代码。例: public …

    Java 2023年5月26日
    00
  • Spring Boot如何使用Spring Security进行安全控制

    关于“Spring Boot如何使用Spring Security进行安全控制”的攻略,我们需要先明确以下几点: Spring Boot集成了Spring Security,只需要在pom.xml中引入Spring Security的依赖即可。 Spring Security可以配置多种安全验证方式,比如基于表单的验证、HTTP基本身份验证、OAuth2等。…

    Java 2023年5月20日
    00
  • 简单了解java ibatis #及$的区别和用法

    下面是关于“简单了解java ibatis #及$的区别和用法”的完整攻略: 什么是Java iBatis? Java iBatis(也称MyBatis)是一种Java持久层框架,它可以将Java对数据库的访问和操作抽象出来,使得Java程序员可以更加方便地访问和操作数据库。而“#”和“$”是Java iBatis中常用的参数占位符,用于动态地替换SQL语句…

    Java 2023年5月20日
    00
  • Mybatis 中如何判断集合的size

    判断 Mybatis 中查询出来的结果集的 size 主要有以下几种方式: 判断查询结果是否为空 可以使用 Mybatis 自带的 isEmpty() 方法判断查询结果是否为空,与此相对地,还可以使用isNotEmpty() 方法判断结果是否不为空。例如: List<User> userList = userMapper.selectUserLi…

    Java 2023年5月20日
    00
  • 详解SpringBoot启动代码和自动装配源码分析

    详解 Spring Boot 启动代码和自动装配源码分析 在本文中,我们将详细讲解 Spring Boot 启动代码和自动装配源码分析的完整攻略。我们将使用 Spring Boot 2.5.0 版本的源码进行分析。 步骤一:下载源码 首先,我们需要下载 Spring Boot 2.5.0 版本的源码。可以从官方网站或者 GitHub 上下载。 步骤二:分析启…

    Java 2023年5月15日
    00
  • 云服务器部署 Web 项目的实现步骤

    云服务器部署 Web 项目的实现步骤可分为以下几个步骤: 购买云服务器首先需要选择一个云服务器提供商,比如阿里云、腾讯云等,根据需求选择一款适合自己的云服务器型号和配置,并进行购买。 配置服务器环境在服务器上安装部署相关的环境和软件,如 Nginx、MySQL、PHP 等,以保证 Web 项目可以正常运行。可以通过 SSH 工具连接到服务器进行安装和配置。 …

    Java 2023年6月2日
    00
  • 如何进行Java程序优化?

    如何进行Java程序优化? 优化 Java 程序的过程是一个不断探索与提升的过程,下面将分享一些常见的优化方式。 1. 使用 StringBuilder 替换 String 在 Java 中,有很多地方需要用到 String,例如拼接长字符串时,我们可能会像这样写: String str = "Hello"; for (int i = 0…

    Java 2023年5月11日
    00
  • Lombok在idea中的使用教程

    这里我将详细讲解 Lombok 在idea中的使用教程。 Lombok是什么 Lombok 是一个简化 Java 代码的工具,通过使用注解来消除一些必须有但显得很臃肿的 Java 代码。 安装Lombok 首先,我们需要在项目的 maven 配置文件中,添加如下依赖: <dependency> <groupId>org.project…

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