shiro驗證過程(登錄過程)

配置文件: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();

 

 

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