本次身份驗證的例子是基於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簡單驗證的例子就結束了。