Shiro笔记(一)Shiro整体介绍
介绍:是一个java的安全(权限)框架
可以完成的功能:认证登录(Authentication)、授权(Authorization)、加密(cryptography)、会话管理(session management)、集成web(web support)、缓存(caching)、记住密码(remember me)。
类似功能的框架:Spring security 。
shiro的执行流程(从外部来看):应用程序->subject->Shiro SecurityManager->Realm.
subject shiro对外API核心就是Subject 。Subject代表当前用,这个登录对象不一定是人,可以是网络爬虫,机器人等。与Subject所有交互都会委托给SecurityManager,Subject是门面,SecurityManager才是真正的执行者。
SecurityManager 安全管理器:
所有与安全有关的操作都会放在SecurityManager中交互;
管理所有的Subject;
它是Shiro的核心,负责与shiro的其他组件进行交互,相当于SpringMVC中的DispatcherServlet。Realm Shiro从Realm中获取安全数据(角色、用户、权限),它要验证用户身份,需要从Realm中获取相应的用户进行比较确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作,可以把Realm看成一个DataSource。
在Realm中,数据先从缓存中获取,如果在缓存中取不到再到数据库中获取,然后将数据放入缓存中。
一. Subject对象:Subject subject = SecurityUtils.getSubject()
;
通过获取subjecet对象后,Subject可以做很多事:
subject.getSession()
;获取session对象,在获取到session后,就可以往session中存放session值了。subject.isAuthenticated()
;判断当前对象是否被认证,即是否登录。subject.login(token)
;subject.hasRole('role')
;对当前用户判断是否有一些角色信息.subject.isPermitted('user:delete:zhangsan')
; 判断当前主体是否有权限.判断用户是否有某种行为.当前代表user能够对zhangsan进行delete操作.subject.logout()
; 执行登出操作.
在subject调用login()方法的时候 , 会出现一些异常,这时候需要我们进行手动捕获这些异常,这些异常可能有 用户名不存在 UnknownAccountException
密码不正确IncorrectCredentialsException
账户被锁定LockedAccountException
以及其他的认证异常(AuthenticationException
).
二. token对象(): Shiro给我们提供了一个UsernamePasswordToken
对象,其中封装了有username
password
rememberMe
host
属性,其中我们可以对token对象进行继承并自定义,如添加是否是手机登录,添加email,别名等.subject判断当前登录主体是否被认证,如果发现没有登录,则需要将当前subject对象的信息放入到token中,subject对token进行登录验证.
Shiro笔记(一)Shiro整体介绍的更多相关文章
- Shiro笔记(五)JSP标签
Shiro笔记(五)JSP标签 导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags&q ...
- Shiro笔记(四)编码/加密
Shiro笔记(四)编码/加密 一.编码和解码 //base64编码.解码 @Test public void testBase64(){ String str="tang"; b ...
- Shiro笔记(三)授权
Shiro笔记(三)授权 一.授权方式 1.编程式: Subject subject=SecurityUtils.getSubject(); if(subject.hasRole("root ...
- Shiro笔记(二)身份验证
Shiro笔记(二)身份验证 一.核心代码 @Test public void helloWorldTest(){ IniSecurityManagerFactory factory = new In ...
- Shiro笔记(一)基本概念
Shiro笔记(一)基本概念 一.简介 Shiro是一个Java安全框架,可以帮助我们完成:认证.授权.加密.会话管理.与Web集成.缓存等. Authentication:身份认证/登录,验证用户是 ...
- Shiro学习笔记四(Shiro集成WEB)
这两天由于家里出了点事情,没有准时的进行学习.今天补上之前的笔记 -----没有学不会的技术,只有不停找借口的人 学习到的知识点: 1.Shiro 集成WEB 2.基于角色的权限控制 3.基于权限的控 ...
- shiro原理及其运行流程介绍
shiro原理及其运行流程介绍 认证执行流程 1.通过ini配置文件创建securityManager 2.调用subject.login方法主体提交认证,提交的token 3.securityMan ...
- Shiro笔记(六)Shiro标签的使用
Shiro标签的使用 引入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags"% ...
- Shiro学习笔记五(Shiro标签,及通配符)
1.首先是导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> ...
随机推荐
- python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)
一.模块的循环导入问题 run.py # import m1 # 第一次导入 m1.py # 错误示范 ''' print('正在导入m1') from m2 import y #第一次导入m2 x= ...
- Oracle11g 体系结构
一:Oracle11g 体系结构 二:逻辑储存结构 二.1:数据块(data blocks) ----通过 v$parameter数据字典来查询oracle标准数据块的大小. SYS@orcl> ...
- MobileNet V2
https://zhuanlan.zhihu.com/p/33075914 http://blog.csdn.net/u011995719/article/details/79135818 https ...
- 开源框架 ImageLoader +ListView+GridView+RecyclerView 浅解
下载地址 链接:https://pan.baidu.com/s/1ebz99pcuvHg2bODgeOtSbg 提取码:ia39 一.导入jar包或者添加依赖 jar包地址 导入jar包:将下载的ja ...
- LeetCode(97):交错字符串
Hard! 题目描述: 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的. 示例 1: 输入: s1 = "aabcc", s2 = &qu ...
- LeetCode(83): 删除排序链表中的重复元素
Easy! 题目描述: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1-&g ...
- 【python】查找函数定义
help(函数名) 举例:想知道gevnet.Timeout这个函数是怎么用的.help(gevent.Timeout). 之前不知道这样查,每次遇到新函数想知道有哪些参数我都要到网上疯狂查阅文档.现 ...
- 三维拓扑排序好题hdu3231
/* 三维拓扑排序 将每个长方体分解成六个面,xyz三维进行操作 每一维上的的所有长方体的面都应该服从拓扑关系,即能够完成拓扑排序=如果两个长方体的关系时相交,那么其对应的三对面只要交叉即可 如 a1 ...
- Linux基础一:Linux的安装及相关配置
1. 计算机操作系统简介 1) 操作系统的定义:操作系统是一个用来协调.管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间. 2) 操作系统的内核的定义:操作系统的内核是一 ...
- Nginx详解十五:Nginx场景实践篇之负载均衡
负载均衡 GSLB(全局的负载均衡,往往是以国家为单位,或者以省为单位) SLB Nginx就是一个典型的SLB模型, 分为四层负载均衡和七层负载均衡 七层负载均衡可以处理应用层,如thhp信息,Ng ...