Apache Shiro进行身份验证

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。

猜你喜欢

转载自blog.csdn.net/dingming001/article/details/79450300