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