zoukankan      html  css  js  c++  java
  • Spring boot 整合 shiro 出现 org.apache.shiro.UnavailableSecurityManagerException: 错误

    最开始参考的是这个 文档 但是并没有解决我的问题,因为他的配置和我的是一样(差不多)的

    https://www.cnblogs.com/ginponson/p/6217057.html

    然后看到此篇博客

    https://bbs.csdn.net/topics/391924615

    <!-- 相当于调用SecurityUtils.setSecurityManager(securityManager) -->
        <bean
            class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
            <property name="staticMethod"
                value="org.apache.shiro.SecurityUtils.setSecurityManager" />
            <property name="arguments" ref="securityManager" />
        </bean>

    https://www.cnblogs.com/kibana/p/8953566.html 这篇讲述了 如何配置 MethodInvokingFactoryBean

    以下是我的配置 

      //主要是这个,但是需要用到 getSecurityManager 所有就贴出来
    @Bean
        public MethodInvokingFactoryBean getMethodInvokingFactoryBean() {
            MethodInvokingFactoryBean methodInvokingFactoryBean=new MethodInvokingFactoryBean();
            methodInvokingFactoryBean.setStaticMethod("org.apache.shiro.SecurityUtils.setSecurityManager");
            methodInvokingFactoryBean.setArguments(getSecurityManager());
            return methodInvokingFactoryBean;
        }
    
    
     /**
         *  创建 DefaultWebSecurityManager
         *  需要关联一个Realm
         *  @Qualifier 获取指定的Bean
         * @return
         */
        @Bean(name = "webSecurityManager")
        public SecurityManager getSecurityManager(){
            DefaultWebSecurityManager webSecurityManager=new DefaultWebSecurityManager();
            /**
             * 配置缓存测量
             */
            //配置redis缓存策略
            RedisCacheManager redisCacheManager = shiroRedisCache().getCacheManager();
            webSecurityManager.setCacheManager(redisCacheManager);
    
            //配置 session 管理
            SessionManager sessionManager =shiroSessionCache(redisCacheManager).sessionManager();
            webSecurityManager.setSessionManager(sessionManager);
    
            /**
             * 关联多个Realm
             */
            Collection<Realm> realms =new ArrayList<>();
          //  realms.add(realmExtension().getJwtRealm());
            realms.add(realmExtension().getUserRealm(doorwayService));
            webSecurityManager.setRealms(realms);
            Collection<SessionListener> listeners = new ArrayList<>();
            return webSecurityManager;
        }


  • 相关阅读:
    前端布局
    mysql默认数据库
    js 计算两个颜色之间的渐变色值 10个色值
    chrome network中的stalled阶段耗时含义
    linux软件源码安装与封装包安装
    如何分辨linux文件颜色
    linux 文件权限
    linux端口查看
    suse linux光盘挂载
    记一次tortoiese git误提交的问题
  • 原文地址:https://www.cnblogs.com/zhangzhonghui/p/11648762.html
Copyright © 2011-2022 走看看