• 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

  • 相关阅读:
    Service、chkconfig命令
    mongoDB 入门
    HTTP 缓存
    MIME类型记录
    CSS3 动画 思维导图
    部署Seafile服务
    AngularJS 学习笔记
    Bootstrap3 学习笔记
    CSS 弹性盒
    传送门(portal)
  • 原文地址:https://www.cnblogs.com/fps2tao/p/13555132.html
Copyright © 2020-2023  润新知