Apache Shiro 身份驗證 (學習記錄01)

 

本次身份驗證的例子是基於ini配置文件


身份驗證


        應用程序需要驗證登錄的是用戶本人,用戶需要提供相應信息來嚮應用程序表明我就是我。提供的用戶信息如,用戶名/密碼、手機號等唯一可以表示用戶身份證明的信息。

       在Shiro中,用戶需要提供身份(principals)和證明(credentials)給Shiro,從而可以幫助應用程序驗證用戶的身份合法性。


身份(principals)


       用戶主體的標識屬性,可以是任何信息,但是必須保證該信息是唯一的。如用戶名、手機號等。一個用戶可以有多個身份信息,但是必須有一個唯一主身份。一般是用戶名/密碼。


證明/憑證(credentials)


       只有用戶知道的可以去驗證用戶身份的安全值,如密碼、數字證書等。

 


 

下面我們來使用Shiro做一個簡單的身份驗證的例子

 

我們使用Maven來構建項目,這樣不需要我們去單獨下載相關的依賴jar包了。

Maven環境依賴

<dependencies>
	<dependency>
		<groupId>org.apache.shiro</groupId>
		<artifactId>shiro-core</artifactId>
		<version>1.2.2</version>
	</dependency>
</dependencies>

我們通過簡單的一個Java類來進行驗證,所以只需要引入必要的shiro-core依賴即可。

 

登錄/登出

  • 在ini配置文件中配置出用戶的信息
[users]
cuierdan=666666
erdan=888888

在ini配置文件中配置了兩個用戶,通過[users]來指定。

  • 創建一個簡單的Java類,帶main()方法的。
/**
 * Shiro 登錄/登出 驗證測試類
 *
 * @author CuiErdan
 * @since 2020/4/100 88點88分
 **/
public class FirstShiro {

    public static void main(String[] args) {
     
    }
}

下面我們添加有關Shiro身份驗證的代碼

/**
 * Shiro 登錄/登出 驗證測試類
 *
 * @author CuiErdan
 * @since 2020/4/100 88點88分
 **/
public class FirstShiro {

    public static void main(String[] args) {
        // 1. 通過ini配置文件來創建SecurityManager 工廠
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
        // 2. 實例化SecurityManager
        SecurityManager securityManager = factory.getInstance();
        // 3. 將SecurityManager 綁定給SecurityUtils 工具上 ,SecurityUtils 類 是一個全局的配置類,設置一次就可以了。
        SecurityUtils.setSecurityManager(securityManager);
        // 4. 通過SecurityUtils 類,得到Subject ,SecurityUtils會將Subject類自動綁定到當前線程。
       //如果是Web環境在請求結束時需要解除綁定。
        Subject subject = SecurityUtils.getSubject();
        // 5. 根據用戶名/密碼獲取用於身份驗證的Token。
        UsernamePasswordToken token = new UsernamePasswordToken("cuierdan","666666");
        try {
            // 6. 將用戶用於驗證身份的Token,傳入到login(),進行登錄。
            //因爲Subject是由SecurityManager 管理的,
            //所以Shiro會自動委託給SecurityManager.login()方法進行登錄。
            subject.login(token);
            System.out.println("成功");
        }catch (AuthenticationException e){
            // 7. 如果認證失敗,根據相應的異常返回對應的提示信息。
            System.out.println("失敗");
        }
        // 8. 當身份驗證成功,用戶信息合法,可以調用登出logout()方法,
        //將該用戶進行登出操作。Shiro會自動委託給SecurityManager.logout()方法。
        //實現登出操作。
        subject.logout();
        System.out.println("已退出");
    }
}

運行本Java類,得到如下結果,驗證成功。

D:\ProgramFiles\Java\jdk1.8.0_181\bin\java.exe ...
成功
已退出

Process finished with exit code 0

可以去修改代碼中的用戶名或密碼,會得到相應驗證的結果。

到此第一個Shiro簡單驗證的例子就結束了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章