简述

Shrio是一款主流的Java安全框架,不依赖任何容器,便可以运行在javaSE和JavaEE项目中,起主要作用便是对访问系统的用户进行身份认证,授权,回话管理,加密等操作。

Shiro基本组成

Shiro主要是用来解决安全管理的系统化框架

需要以下环境依赖

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.9</version>
    </dependency>
    <!--日志打印包-->
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.3</version>
    </dependency>
    <!--shiro依赖包-->
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>1.2.2</version>
    </dependency>
</dependencies>

Shiro核心组件

  • UsernamePasswordToken:Shiro用来封装用户登录信息,使用用户的登录信息来创建令牌Token

  • SecurityManager:Shiro的核心部分,负责安全认证和授权

  • Suject:Shiro的一个抽象概念,包含了用户信息

  • Realm 开发者自定义的模块,根据项目的需求,验证和授权的逻辑全部写在Realm中

  • AuthenticationInfo:用户的角色信息集合,认证时使用

  • AuthorzationInfo:角色的权限信息集合,授权时使用

  • DeaultWebSecurityDManager 安全管理器,开发者自定义的Realm需要注入到DeaultWebSecurityDManager进行管理才能生效

  • ShiroFilterFactoryBean,过滤器工厂,Shiro 的基本运行机制是开发者定制规则,Shiro 去执行,具体的执行操作就是由 ShiroFilterFactoryBean 创建的一个个 Filter 对象来完成。

    Shiro运行流程图

    这里需要说明一个概念

    权限,角色,用户三者的关系:权限并非是直接给到用户,而是通过将权限首先给到角色,将用户赋为不同的角色,来实现对用户的不同权限。


未完待续