zoukankan      html  css  js  c++  java
  • IDEA完成shiro认证报错:org.apache.shiro.config.ConfigurationException: java.io.IOException: Resource

    最近跟着视频学shiro,作为一个小白,刚开始就遇到了一个折腾半天都没解决的报错: org.apache.shiro.config.ConfigurationException: java.io.IOException: Resource [classpath:shiro-first.ini] could not be found.

    大意上就是ini配置文件没有找到,这是代码:

    package cn.itcast.shiro.authentication;
    
    import org.apache.shiro.SecurityUtils;
    import org.apache.shiro.authc.AuthenticationException;
    import org.apache.shiro.authc.UsernamePasswordToken;
    import org.apache.shiro.config.IniSecurityManagerFactory;
    import org.apache.shiro.mgt.SecurityManager;
    import org.apache.shiro.subject.Subject;
    import org.apache.shiro.util.Factory;
    import org.junit.Test;
    
    
    public class AuthenticationTest {
    
        // 用户登陆和退出
        @Test
        public void testLoginAndLogout() {
    
            // 创建securityManager工厂,通过ini配置文件创建securityManager工厂
            //1.创建一个安全管理器的工厂
            Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro-first.ini");
            //2.在工厂中获取安全管理器
            SecurityManager securityManager = factory.getInstance();
            //3.将securityManager绑定到运行环境
            SecurityUtils.setSecurityManager(securityManager);
            //4.获取Subject对象(将要登录的用户)
            Subject subject = SecurityUtils.getSubject();
            //5.获取要登录用户的token,客户端传递过来的用户名和密码
            String username = "zhangsan",password="123456";
            UsernamePasswordToken token = new UsernamePasswordToken(username,password);
    
            try{
                subject.login(token);
            }catch (AuthenticationException e){
                e.printStackTrace();
            }
            boolean isAuthenticated = subject.isAuthenticated();
            System.out.println("是否认证通过:"+isAuthenticated);
            //执行退出操作
    
            subject.logout();
            System.out.println("执行推出操作");
            System.out.println("是否认证通过:"+subject.isAuthenticated());
    
        }
    
    }

    文件目录

    config文件夹没有设置成资源文件夹,接下来看一下在idea里如何设置成资源文件夹吧

    右键config文件夹,找到Mark Directory as 单击Resources Root设置成资源文件夹,之后你的.ini配置文件就可以被IniSecurityManagerFactory访问到,最后看一下设置完成资源文件夹的控制台输出信息吧。

    另一个因素(本人遇到的原因):

    因为我的项目是maven项目,pom.xml有这样的设置:

        <resources>
            <!--编译之后包含xml-->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.org</include>
                    <include>**/*.txt</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.org</include>
                    <include>**/*.txt</include>
                </includes>
                <filtering>true</filtering>
            </resource>
    
        </resources>

    现在知道了吧: 添加了ini文件后,重启IDE即可 (这样就可以资源目录文件编译的时候复制到classpath了)

    <include>**/*.ini</include>

    转 : https://blog.csdn.net/a1106103430/article/details/86519355

  • 相关阅读:
    行动- 一桌菜,十几盘,有荤有素,有凉有热,怎么吃呢?你可以找一盘看起来好吃的,也可以找一盘离自己近的,都行。但是,得动筷子。不管怎么吃,最重要的是得动筷子。学技术也是一样。 有的人死活不动筷子,还不断念叨:“我要开始吃了。我马上就要开始吃了。我只要开始吃就能吃饱。我吃饱了就不饿了。你能不能告诉我该先吃哪一盘?先冷盘后热菜再喝汤这样是不是最好?但是我听说广东人都是先...
    行动
    互相牵制的能力
    我的信仰
    my life
    PDCA循环
    命运
    健身 赚钱 ; 旅行 用心爱一个人就行了 其他的都会开挂来临~
    灵魂
    陪伴的意义
  • 原文地址:https://www.cnblogs.com/fps2tao/p/13555132.html
Copyright © 2011-2022 走看看