配置文件:ini格式(紅頭文件)
jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm dataSource=com.alibaba.druid.pool.DruidDataSource dataSource.driverClassName=com.mysql.cj.jdbc.Driver dataSource.url=jdbc:mysql://localhost:3306/shiro dataSource.username=root #dataSource.password= jdbcRealm.dataSource=$dataSource securityManager.realms=$jdbcRealm
Java類:
Factory<SecurityManager> 公安部(大BOSS)
IniSecurityManagerFactory / WebIniSecurityManagerFactory 公安廳
SecurityManager 警察
SecurityUtils 公安局
Subject 驗證主體【理解爲安全管理所(派出所)】
UsernamePasswordToken 提交的信息
Realm 驗證方式(不會直接使用,通過框架調用)
大致流程:
大Boss下發重要的紅頭文件到指定的公安廳(安全管理廳分爲兩個塊,一個負責管理本地治安,一個負責管理網絡治安),從中挑選出一個警察來,下派去派出所執行公務(驗證提交信息是否正確)
使用方法:
1.創建工廠:
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
2.得到工廠實例並創建安全管理員:
SecurityManager securityManager = factory.getInstance();
3.爲安全工具提供使用者(manager):
SecurityUtils.setSecurityManager(securityManager);
4.通過安全工具獲取驗證主體:
Subject subject = SecurityUtils.getSubject();
5.創建驗證信息:
UsernamePasswordToken token = new UsernamePasswordToken("賬戶", "密碼");
6.通過驗證主體(機構)來做信息驗證工作(登錄):
subject.login(token);//此方法需要try-catch-AuthenticationException,如發生異常爲驗證(登錄)失敗
7.清除登錄信息:
subject.logout();