Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障。
Shiro中可以在.ini文件中指定一个认证主体,也可以从数据库中取,这里使用.ini文件来写一个简单的认证主体:
[users]
test=123456
这里指定一个test的用户。其密码为:123456
验证过程:
1.获取安全管理器
2.获取用户
3.用户登录验证
//1.获取安全管理器
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
//2.需要设置安全管理器
SecurityUtils.setSecurityManager(securityManager);
//3.获取subject对象,即将登录的用户
Subject currentUser = SecurityUtils.getSubject();
//4.根据用户名和密码获得一个令牌(token)
UsernamePasswordToken token = new UsernamePasswordToken("test", "123456");
//5.进入验证
try {
currentUser.login(token);
} catch ( AuthenticationException ae ) {
//unexpected error?
//Handel error
}
//6.subject.logout()放弃所有的身份信息
currentUser.logout();
执行认证的流程:
1.应用程序代码在调用Subject.login(token)方法后,传入代表最终用户的身份和凭证构造的AuthenticationToken实例token。
2.将Subject实例委托给应用程序的SecurityManager(Shiro的安全管理)通过调用securityManager.login(token)来开始实际的认证工作。
3.然后SecurityManager就会根据具体的reaml去进行安全认证了。 reamls可以是shiro.ini也可以是其它的文件,生产中常用的是jdbc realm。