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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM