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();

 

 

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