Shiro实战1-介绍

什么是 Shiro

官网:http://shiro.apache.org/
shiro是一款主流的 Java 安全框架,不依赖任何容器,可以运行在 Java SE和 Java EE 项目中,它的主要作用是对访问系统的用户进行身份认证、授权、会话管理、加密等操作。
Shiro 就是用来解决安全管理的系统化框架。

总体架构

在这里插入图片描述

核心功能

在这里插入图片描述

  • 认证Authentication
  • 授权Authorization
  • 会话管理
  • 加密
  • 缓存

用户信息、角色、权限等缓存到如redis等缓存中

  • Web集成支持
  • 测试支持
  • 记住我

核心组件

1、UsernamePasswordToken,Shiro 用来封装用户登录信息,使用用户的登录信息来创建令牌 Token。
2、SecurityManager,Shiro 的核心部分,负责安全认证和授权。
3、Suject,Shiro 的一个抽象概念,包含了用户信息。
4、Realm,开发者自定义的模块,根据项目的需求,验证和授权的逻辑全部写在 Realm 中。
5、AuthenticationInfo,用户的角色信息集合,认证时使用。
6、AuthorzationInfo,角色的权限信息集合,授权时使用。
7、DefaultWebSecurityManager,安全管理器,开发者自定义的Realm 需要注入到 DefaultWebSecurityManager 进行管理才能生效。
8、ShiroFilterFactoryBean,过滤器工厂,Shiro 的基本运行机制是开发者定制规则,Shiro 去执行,具体的执行操作就是由ShiroFilterFactoryBean 创建的一个个 Filter 对象来完成。

认证过程

在这里插入图片描述

1.收集身份和令牌(用户名/密码)

//Example using most common scenario of username/password pair:
UsernamePasswordToken token = new UsernamePasswordToken(username, password);

//"Remember Me" built-in: 
token.setRememberMe(true);

2.提交身份和令牌

Subject currentUser = SecurityUtils.getSubject();

currentUser.login(token);

3.处理认证成功和失败

try {
    currentUser.login(token);
} catch ( UnknownAccountException uae ) { ...
} catch ( IncorrectCredentialsException ice ) { ...
} catch ( LockedAccountException lae ) { ...
} catch ( ExcessiveAttemptsException eae ) { ...
} ... catch your own ...
} catch ( AuthenticationException ae ) {
    //unexpected error?
}

//No problems, continue on as expected...

更详细的认证请参考

http://shiro.apache.org/authentication.html#authentication-sequence

posted @ 2021-03-02 23:04  一锤子技术员  阅读(4)  评论(0编辑  收藏  举报  来源