Shiro

1. 概述

​ Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证(登录验证)、授权(控制权限)、加密、会话管理、与Web集成、缓存等。这不就是我们想要的嘛,而且Shiro的API也是非常简单.

​ Authentication:身份认证/登录,验证用户是不是拥有相应的身份;

​ Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。

​ Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;

​ Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;

​ Web Support:Web支持,可以非常容易的集成到Web环境;

​ Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;

注意:Shiro不会去维护用户、维护权限;这些需要我们自己去设计/提供;然后通过相应的接口注入给Shiro即可。

2.运行原理

1) Subject:主体,代表了当前“用户”。这个用户不一定是一个具体的人,与当前应用交互的任何东西都是 Subject,如网络爬虫,机器人等。所有 Subject 都绑定到 SecurityManager,与 Subject 的所有交互都会委托给 SecurityManager。我们可以把 Subject 认为是一个门面,SecurityManager 才是实际的执行者。

​ 2) SecurityManager:安全管理器。即所有与安全有关的操作都会与 SecurityManager 交互,且它管理着所有 Subject。可以看出它是 Shiro 的核心,它负责与后边介绍的其他组件进行交互。

​ 3) Realm:域。Shiro 从 Realm 获取安全数据(如用户、角色、权限),就是说 SecurityManager 要验证用户身份,那么它需要从 Realm 获取相应的用户进行比较以确定用户身份是否合法(需要连接访问数据库),也需要从 Realm 得到用户相应的角色/权限进行验证用户是否能进行操作。我们可以把 Realm 看成 DataSource,即安全数据源。

3.搭建shiro

3.1Maven集成shirojar包

<!-- shiro-web -->
<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-web</artifactId><version>1.3.2</version>
</dependency>
<!-- commons-logging -->
<dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version>
</dependency>
<!-- log4j -->
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>

3.2配置web.xml

<!-- 配置shiro的监听器 -->
<listener><listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
<!-- 配置shiro的过滤器 -->
<filter><filter-name>shiroFilter</filter-name><filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>
<!-- 配置shiro过滤器的作用范围 -->
<filter-mapping><filter-name>shiroFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

3.3配置定义shiro.ini文件

在WEB-INF目录下创建shiro.ini文件,配置shiro

[main]
loginRealm=com.ff.shiroDemo.util.LoginRealm  登录处理realm
securityManager.realms=$loginRealm
authc.loginUrl = /login.jsp 未登录跳转到指定页面
[urls]
/login.jsp = anon  不需要登录即可匿名访问
/demo.jsp = anon
/back/** = authc  需要登录才可以访问的

Shiro框架基础及搭建相关推荐

  1. shiro框架基础--shiro框架概念及原理

    一 shiro的简介 shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证.用户授权. 二 shiro的架构图 authenticator:认证器,主体进行认证最终通过auth ...

  2. Shiro框架在项目中的应用

    1.Shiro 框架简介 Shiro 概述 Shiro 是Apache公司推出一个权限管理框架,其内部封装了项目中认证,授权,加密,会话等逻辑操作,通过Shiro框架可以简化我们项目权限控制逻辑的代码 ...

  3. Spring3.2.0-mybatis3.2.0 基于全注解搭建的后台框架-基础版

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: Spring3.2.0-mybatis3.2.0 基于全注解搭建的后台框架-基础版 没有什么不可能  之前一直用的是自 ...

  4. 零基础快速搭建rxjava框架

    零基础快速搭建rxjava框架 基本概念 定义 RxJava 是一个 基于事件流.实现异步操作的库 原理 角色 作用 类比 被观察者(Observable) 产生事件 顾客 观察者(Observer) ...

  5. Mybatis学习笔记(二)【框架基础搭建】

    Mybatis框架基础搭建 一.数据库搭建 二.创建一个maven工程 三.在pom.xml中导入依赖 四.创建一个mybatis的核心配置文件 配置连接数据库的字段值文件(如果使用方式一就不需要配置 ...

  6. SpringCloud Alibaba微服务实战(一) - 基础环境搭建

    说在前面 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来 ...

  7. Mybatis入门:1(Mybatis框架的环境搭建)

    Mybatis框架的环境搭建 一.创建maven工程并导入坐标 导入坐标: <dependencies><dependency><groupId>org.mybat ...

  8. shiro框架的使用及扩展

    2019独角兽企业重金招聘Python工程师标准>>> 管理后台的权限管理模块搭建中使用了shiro框架. shiro的优点是:相对Spring Security较为轻巧,使用起来自 ...

  9. Spring集成Shiro框架实战

    文章目录 一:什么是Shiro框架 二:Shiro框架简介 1.Shiro基础功能点介绍 2.Shiro的工作原理 3.Shiro的内部工作结构 4.Shiro的身份认证流程 三:Spring集成Sh ...

最新文章

  1. C语言之计算大数阶乘,如计算100!和1000!等~~~
  2. cJsonFiles数据结构
  3. Jupyter notebook与Spyder,以及Jupyter notebook与Spyder集成插件
  4. linux 3gpp格式转换器,Movavi Video Converter
  5. C++【“using namespace std”的意思、#include “iostream“与#include < iostream>区别、< iostream>与< iostream.h>区别】
  6. 面试金典--11.5
  7. gdb命令中attach使用
  8. 2013计算机系统导论,【精选】2013计算机系统导论-期末考卷-发布.pdf
  9. vis.js入门_使用TensorBoard数据Vis的TensorFlow手术分类器入门
  10. 【Java】【编译】javac编译源代码时,若源文件使用了别的java源代码的函数,javac会自动关联。...
  11. Request.GetOwinContext()打不到
  12. 自学编程这几点非常重要
  13. 开源监控——cacti
  14. 虚拟服务器共享文件设置,虚拟机共享文件夹设置流程
  15. OpenShift 4 - 用 External Secret 集成 Hashicorp Vault
  16. XUPT 寒假算法集训第三周
  17. 海滨学院计算机基础考试题库含答案,北京交通大学海滨学院计算机基础考试卷-网络应用基础.doc...
  18. Python实现SVM的实例(包括网格调参和测试)总结综述
  19. 《牛客刷verilog》Part III Verilog企业真题
  20. 四大主流CA机构——国产占据其一

热门文章

  1. [嵌入式框架][nrf51822][SDK12.3] BLE分层设计 NUS 透传数据队列发送,提升带宽利用率
  2. linux 脚本含参,linux shell脚本文件的入参
  3. 郑豪7.16黄金高位盘旋不破,留意跌势悄然来袭,黄金晚间走势操作建议
  4. 玩一玩Spring容器(可视化笔记02)
  5. 计算机图形设计论文 真实图形生成技术的发展,计算机图形设计论文真实图形生成技术的发展.docx...
  6. 关于工厂类app的一些想法
  7. python怎么批量下载年报_使用Python批量下载Wind数据库中的PDF报告
  8. 不忍舍弃的回忆——我的大学时代
  9. 2023年推荐几款开源或免费的web应用防火墙
  10. robomongo 连不上mongodb 权限问题