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的执行流程

shiro的小白学习-LMLPHP

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。

暂时就记录这么多吧!

05-20 18:10