身份認證
在應用中使用者怎麼證明自己的身份,一般需要提供一些憑據,最常見的如使用者名、密碼等。在shiro中需要使用者提供Principals(身份)和credentials(證明)
Principals:身份,辨別主體。如手機号、郵箱、使用者名等。
Credentials:證明,和安全主體對應的值,密碼證書等。
ini檔案
在第二章,原書使用了ini配置檔案,來配置Realm。 ini是初始化initialization File的簡寫,是windows下的初始檔案的存儲形式,常用于一些預設配置。
由 節、鍵、值組成,使用;表示注釋
使用 [section]表示節 鍵=值的形式
比如shiro的一個ini配置:指定了一組使用者名和密碼的關系
;這是一個簡單的使用者配置
[users]
zhangsan=zhangsan123
wang=123
一個簡單的認證過程:
public class MyDemo {
public static void main(String[] args) {
{
//工廠模式 擷取SecurityManagerFactory
IniSecurityManagerFactory iniSecurityManagerFactory = new IniSecurityManagerFactory(“classpath:shiro-realm.ini”);
//擷取一個執行個體
SecurityManager instance = iniSecurityManagerFactory.getInstance();
//設定SecurityUtil
SecurityUtils.setSecurityManager(instance);
//擷取Subject和token
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token=new UsernamePasswordToken(“zhangsan”,“zhangsan”);
try {
//登入
subject.login(token);
}catch (AuthenticationException e){
e.printStackTrace();
}
boolean authenticated = subject.isAuthenticated();
System.out.println(authenticated);
//登出
subject.logout();
}
}
}