frame shiro 概述
权限管理
权限管理包括用户身份认证和授权两部分,简称认证授权。
身份认证包括用户口令登陆、指纹验证、刷卡等方式。
授权即访问控制,控制谁能访问哪些资源,主体身份认证后分配权限以访问自己可以访问的资源。
主体发出请求 --> 判断是否允许匿名访问(淘宝首页) --> 判断是否通过认证 --> 输入用户名口令认证 --> 判断是否通过认证
Apache Shiro 简介
Apache Shiro 是java的一个安全框架。目前使用Apache Shiro的人越来越多,因为它相当简单,对比spring Security,可能没有Spring Security 功能强大,但实际工作时可能不需要那么复杂的东西,使用小而简单的Shiro就足够了。
Shiro不仅可以用在JavaSE环境,也可以用在JavaEE环境。它可以帮助我们完成:认证、授权、加密、会话管理、与web集成、缓存等。
Apache Shiro 框架

Authentication--认证 Authorization--授权 SessionManagement--会话管理,会话可以是Java SE环境,也可以是Java EE环境;可以实现分布式的会话管理
Crytography--加密密码 web support--web支持 caching--缓存 remember me--记住我 Testing--提供测试支持
Concurrency--shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去 Run As--允许一个用户假装为另一个用户(如果他们允许)的身份进行访问
Apache Shiro 概念
shiro架构有三个主要概念:subject、securityManager、realms

Subject,主体(user),可以是用户也可以是程序、爬虫。
securityManager 安全管理器,它是shiro的核心,有点类似于springmvc的DispatcherServlet。它管理着所有Subject,并负责与其他组件(认证器、授权器、缓存控制器)交互。securityManager 不做具体的事情,具体的事情由认证器、授权器、缓存控制器来做,securityManager 调用认证器、授权器、缓存控制器来做具体的事情。
realm,可以有一个或多个,安全实体数据源,即用于获取安全实体的。比如执行认证和授权(访问控制)时,shiro会从应用配置的realms中查找相当的比对数据,以确认用户是否合法。可以是jdbc实现,也可以是LDAP实现,或者内存实现等等,由用户提供。因为shiro不知道用户/权限存储在哪以及使用何种格式存储,所以我们一般在应用中都需要实现自己的realm。
其它概念
Principal,身份信息(username),具有唯一性,如用户名、手机号、邮箱地址等,一个用户可以有多个身份信息,但必须有一个主身份信息。
credential,凭证信息(password),如密码、证书等。
Apache Shiro 结构

Subject --> Security Manager --> Authenticator/Authorizer/Session Manager/Cache Manager --> realm(JDBC、LDAP)
SessionDAO --> DAO大家都用过,数据访问对象,用于会话的CRUD,比如我们想把Session保存到数据库,那么可以实现自己的SessionDAO,通过如JDBC写到数据库;比如想把Session放到redis中,可以实现自己的redis SessionDAO;另外SessionDAO中可以使用Cache进行缓存,以提高性能
frame shiro 概述的更多相关文章
- frame shiro 授权及原理简述
shiro 授权模式 shiro采用的是rbac授权模式rbac,基于角色的权限管理,谁扮演什么角色,被允许做什么事情. shiro 授权流程 shiro 授权方式 1.编程式 通过写if/else授 ...
- frame shiro 认证示例及原理简述
shiro 认证流程 1.创建一个 javaSE 的maven项目(quickstart),并添加依赖 <dependency> <groupId>junit</grou ...
- Shiro——概述
Apache Shiro 是 Java 的一个安全(权限)框架. Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在 JavaEE 环境. Shiro 可以完成 ...
- SSM项目实战 之 Shiro
目录 Shiro 概述 shiro核心概念 核心类 整体类图 主要概念 Shiro架构 认证 什么是认证 关键对象 使用ini完成认证 认证流程 自定义realm 散列密码 授权 什么是授权 使用in ...
- (2018干货系列一)最新Java学习路线整合
怎么学Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. 话不多说,直接上干货: ...
- springboot+mybatis+maven角色权限框架
发布时间:2018-10-24 技术:springboot,mybatis,maven,shiro 概述 Springboot作为基础框架,使用mybatis作为持久层框架 使用官方推荐的th ...
- Apache Shiro系列之五,概述 —— 配置
Shiro设计的初衷就是可以运行于任何环境:无论是简单的命令行应用程序还是复杂的企业集群应用.由于运行环境的多样性,所以有多种配置机制可用于配置,本节我们将介绍Shiro内核支持的这几种配置机制. ...
- Apache Shiro系列四,概述 —— Shiro的架构
Shiro的设计目标就是让应用程序的安全管理更简单.更直观. 软件系统一般是基于用户故事来做设计.也就是我们会基于一个客户如何与这个软件系统交互来设计用户界面和服务接口.比如,你可能会说:“如 ...
- Apache Shiro系列三,概述 —— 10分钟入门
一.介绍 看完这个10分钟入门之后,你就知道如何在你的应用程序中引入和使用Shiro.以后你再在自己的应用程序中使用Shiro,也应该可以在10分钟内搞定. 二.概述 关于Shiro的废话就不多说了 ...
随机推荐
- IIS Express 配置 Json
在VS2013中调试D3官网的一些Sample过程中遇到了一个奇怪的问题:凡是Sample中使用的数据源是json文件时候,smaple 就无法在浏览器中正常运行.经调试后发现根本原因是IIS Exp ...
- (转)Mysql常用命令行
原文:http://www.cnblogs.com/TsengYuen/archive/2012/01/11/2319034.html Mysql常用命令行 Mysql经常使用号令行大全 熬头招.my ...
- android开发中的 Activity 与 Context 区别与联系
Context 是 Application /Activity /Service的基类 Intent(Context , Class); Activity中的上下文Context是随着活动的产生而产生 ...
- JavaScript -- 猜数、遍历
----- 004-猜数.html ----- <!DOCTYPE html> <html> <head> <meta http-equiv="Co ...
- tensorflow model save and restore
TensorFlow 模型保存/载入 我们在上线使用一个算法模型的时候,首先必须将已经训练好的模型保存下来.tensorflow保存模型的方式与sklearn不太一样,sklearn很直接,一个skl ...
- 如何在python3环境下的Django中使用MySQL数据库
我们在使用Django过程中,连接MySQL数据库时,对Python不同的版本对应的库也不一样,用惯了Python2的人在使用Python3时经常会遇到下面的错误: Error loading MyS ...
- NodeJS调用jar包
我们在实际的生产.开发实践中,其实要和许多第三方服务商进行打交道,这其中包括使用他们提供的批量与联机服务,但与别的互联网企业不大相同的是,银行作为传统企业,其一贯重视安全性,许多在互联网企业看似理所当 ...
- golang基础--细说defer
defer 匿名函数特性 执行方式类似其它语言中的析构函数,在函数体执行结束后按照调用顺序的相反顺序逐个执行 //执行顺序相反 package main import "fmt" ...
- Linux下编译ffmpeg并用GDB调试
1.在Ubuntu界面上调处命令行界面,最方便的方式是使用快捷键Ctrl+Alt+T. 2.安装SDL SDL是一个开源的多媒体开发库,可以设置图像和视频的绘制等操作.如果不安装SDL,FFMPEG将 ...
- python学习之参数传递
^参数传递分为定义(形参)和调用(实参)两种情况.^ 1. 定义(形参) 默认参数 def func(x, y=None): # 任何时候必须 优先定义 位置参数 # 默认参数和可变参数*args 顺 ...