zoukankan      html  css  js  c++  java
  • (转)shiro权限框架详解03-shiro介绍

    http://blog.csdn.net/facekbook/article/details/54893740

    shiro介绍

    本文正式进入主题。本文将介绍如下内容:

    • 什么是shiro
    • 为什么需要学习shiro
    • shiro架构
    • shiro的jar包

    什么是shiro

    Apache Shiro(日语“堡垒(Castle)”的意思)是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。—— [ 百度百科 ]

    为什么要学习shiro

    shiro已经将安全认证相关的功能抽取出来组成一个框架,使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统开发成本。 
    shiro使用广泛,shiro可以运行在web应用、非web应用、集群分布式应用中越来越多的用户开始使用shiro。 
    java领域中spring security也是一个开源的权限管理框架,但是spring security依赖spring运行,而shiro就相对独立,最主要因为shiro使用简单、灵活。

    shiro架构

    shiro的整体架构图如下: 

    架构图分析

    图中的subject就是请求主体。subject请求都交给Security Manager进行处理。Security Manager是暴露给主体请求的唯一一个接口。 
    在Security Manager 中又有Authenticator、Authorized、 
    SessionManager、Realm、SessionDAO和Cache Manager模块。下面会详细介绍这些模块的作用。

    Subject

    Subject即主体,外部应用与 subject进行交互,subject记录了当前操作用户,将用户的理解为当前操作的主体,可以是通过浏览器请求的用户,也可能是一个运行的程序。 
    Subject在shiro中是一个接口,接口中定义了很多认证授权的方法,外部程序通过subject进行认证授权,而subject通过Security Manager安全管理器进行认证授权。

    Security Manager

    Sercurity Manager即安全管理器,对所有的subject进行管理,它是shiro的核心,负责对所有的subject进行安全管理。通过Security Manager可以完成对shiro的认证、授权等,但是实质上Security Manager是通过Authenticator进行认证、通过Authorizer进行授权、通过sessionManager进行会话管理等。 
    SecurityManager是一个接口,继承了Authenticator、Authorizer、SessionManager这三个接口。

    Authenticator

    Authenticator即认证器,对subject身份进行认证,Authenticator是一个接口,shiro提供了ModularRealmAuthenticator实现类,通过ModularRealmAuthenticator基本上可以满足大多数的需求,也可以自定义认证器。

    Authorizer

    Authorizer即授权器,subject认证通过后,在访问功能时需要通过授权器判断用户是否有此功能的操作权限。

    Realm

    realm即域,相当于DataSource数据源,securityManager进行安全认证需要通过realm获取用户权限数据,比如:如果用户身份信息存储在数据库那么realm就需要从数据库获取用户身份信息。 
    注意: 不要把realm理解成只是从数据源取数据,在realm中还有认证授权校验相关的代码。

    Session Manager

    sessionManager 即会话管理,shiro框架提供了一套会话管理,它不依赖web容器的session,所以shiro可以使用在非web环境中,也可以将分布式应用的会话集中在一点管理,此特性可使它实现单点登录。

    sessionDAO

    sessionDAO即会话管理DAO,是对session会话管理操作的一套接口,比如要将session存储到数据库,可以使用jdbc将会话存储到数据库。

    CacheManager

    CacheManager即缓存管理,将用户权限存储在缓存,可以提高性能。

    Crypography

    crypography即密码管理,shiro提供了一套加密/解密的组件,方便开发。提供了常用的散列、加/解密算法

    shiro的jar包

    与其他Java开源项目一样,只需要加入jar包就可以开始使用shiro 了。shiro-core.jar是必选的,还提供了与web整合的shiro-web、与spring整合的shiro-spring、与任务调度quartz整合的shiro-quartz等,下面给出shiro各jar包的maven坐标。

            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-core</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-web</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-spring</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-ehcache</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-quartz</artifactId>
                <version>1.2.3</version>
            </dependency>

    当然也可以引入shiro-all包括shiro所有的jar包,但是不建议使用。还是用到什么引入什么。

        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-all</artifactId>
            <version>1.2.3</version>
        </dependency>
  • 相关阅读:
    Spring boot unable to determine jdbc url from datasouce
    Unable to create initial connections of pool. spring boot mysql
    spring boot MySQL Public Key Retrieval is not allowed
    spring boot no identifier specified for entity
    Establishing SSL connection without server's identity verification is not recommended
    eclipse unable to start within 45 seconds
    Oracle 数据库,远程访问 ora-12541:TNS:无监听程序
    macOS 下安装tomcat
    在macOS 上添加 JAVA_HOME 环境变量
    Maven2: Missing artifact but jars are in place
  • 原文地址:https://www.cnblogs.com/telwanggs/p/7118069.html
Copyright © 2011-2022 走看看