1. shiro是啥就不用说了吧
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理
SecurityManager 是shiro的核心。它不同于java.lang.SecurityManager ---------SecurityUtils.getSubject() 可以理解为User
2. shiro可以做什么事情
验证用户
判断用户拥有的角色
判断用用户可以访问的资源
单点登陆
Remember Me服务 Shiro官方当然建议你开启了,要不然费那么大力气干啥
3. shiro的四大部分
Authentication:身份验证,简称“登录”。
Authorization:授权,给用户分配角色或者权限资源
Session Management:用户session管理器,可以让CS程序也使用session来控制权限
Cryptography:把JDK中复杂的密码加密方式进行封装。
4. shiro的执行流程
5. shiro执行流程的解释说明
ApplicationCode(输入用户名,密码)
--->
Subject(拿到用户名,密码)
--->
进入Shiro SecurityManager
--->
执行Realms(登录和验证)
如果有多个realms AuthenticationStrategy 将会协调这些 Realm
6.shiro中的组件
SessionManager
SessionDAO代表 SessionManager 执行 Session 持久化(CRUD)操作
CacheManager
CacheManager 创建并管理其他 Shiro 组件使用的 Cache 实例生命周期
Cryptography
Shiro 的 crypto 包包含量易于使用和理解的cryptographicCiphers 就是加密
Realms
Realms 在 Shiro 和你的应用程序的安全数据之间担当“桥梁”或“连接器
CredentialsMatcher
密码凭证匹配器
7.常用的注解
@RequiresAuthentication
验证用户是否登录,等同于方法subject.isAuthenticated() 结果为true时
@RequiresUser
验证用户是否被记忆
@RequiresGuest
验证是否是一个guest的请求,与@ RequiresUser完全相反。换言之,RequiresUser == ! RequiresGuest 。此时subject.getPrincipal() 结果为null.
@ RequiresRoles("aRoleName")用在方法上
如果subject中有aRoleName角色才可以访问方法,如果没有这个权限则会抛出异常AuthorizationException
@RequiresPermissions
要求subject中必须含有这个权限才可以访问此方法,要不抛出异常AuthorizationException。
暂时就记录这么多吧!