介绍:是一个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可以做很多事:

  1. subject.getSession();获取session对象,在获取到session后,就可以往session中存放session值了。
  2. subject.isAuthenticated();判断当前对象是否被认证,即是否登录。
  3. subject.login(token);
  4. subject.hasRole('role');对当前用户判断是否有一些角色信息.
  5. subject.isPermitted('user:delete:zhangsan') ; 判断当前主体是否有权限.判断用户是否有某种行为.当前代表user能够对zhangsan进行delete操作.
  6. subject.logout() ; 执行登出操作.

在subject调用login()方法的时候 , 会出现一些异常,这时候需要我们进行手动捕获这些异常,这些异常可能有 用户名不存在 UnknownAccountException 密码不正确IncorrectCredentialsException 账户被锁定LockedAccountException以及其他的认证异常(AuthenticationException).

二. token对象(): Shiro给我们提供了一个UsernamePasswordToken对象,其中封装了有username password rememberMe host 属性,其中我们可以对token对象进行继承并自定义,如添加是否是手机登录,添加email,别名等.subject判断当前登录主体是否被认证,如果发现没有登录,则需要将当前subject对象的信息放入到token中,subject对token进行登录验证.

Shiro笔记(一)Shiro整体介绍的更多相关文章

  1. Shiro笔记(五)JSP标签

    Shiro笔记(五)JSP标签 导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags&q ...

  2. Shiro笔记(四)编码/加密

    Shiro笔记(四)编码/加密 一.编码和解码 //base64编码.解码 @Test public void testBase64(){ String str="tang"; b ...

  3. Shiro笔记(三)授权

    Shiro笔记(三)授权 一.授权方式 1.编程式: Subject subject=SecurityUtils.getSubject(); if(subject.hasRole("root ...

  4. Shiro笔记(二)身份验证

    Shiro笔记(二)身份验证 一.核心代码 @Test public void helloWorldTest(){ IniSecurityManagerFactory factory = new In ...

  5. Shiro笔记(一)基本概念

    Shiro笔记(一)基本概念 一.简介 Shiro是一个Java安全框架,可以帮助我们完成:认证.授权.加密.会话管理.与Web集成.缓存等. Authentication:身份认证/登录,验证用户是 ...

  6. Shiro学习笔记四(Shiro集成WEB)

    这两天由于家里出了点事情,没有准时的进行学习.今天补上之前的笔记 -----没有学不会的技术,只有不停找借口的人 学习到的知识点: 1.Shiro 集成WEB 2.基于角色的权限控制 3.基于权限的控 ...

  7. shiro原理及其运行流程介绍

    shiro原理及其运行流程介绍 认证执行流程 1.通过ini配置文件创建securityManager 2.调用subject.login方法主体提交认证,提交的token 3.securityMan ...

  8. Shiro笔记(六)Shiro标签的使用

    Shiro标签的使用 引入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags"% ...

  9. Shiro学习笔记五(Shiro标签,及通配符)

    1.首先是导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> ...

随机推荐

  1. 自然语言处理之关键词提取TF-IDF

    统计每篇文章重要的词作为这篇文章的关键词,用tf-idf来实现.生产中有很多第三包可以调用,这里记录原理,顺便熟练python 1.公式 : 计算词频TF 考虑到文章有长短之分,为了便于不同文章的比较 ...

  2. C#闰年判断

  3. day10 函数2

    为什么需要函数? 先使用目前的知识点实现一个需求: """ 三个功能   1.登录   2.购物车   3.收藏夹       收藏夹和 购物车 需要先登录才能使用!   ...

  4. Nginx的进程模型及高可用方案(OpenResty)

    1. Nginx 进程模型简介 Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程.其中master充当整个进程组与用户的交互接口,同时对进程进行监护 ...

  5. LeetCode(115):不同的子序列

    Hard! 题目描述: 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字 ...

  6. jQuery为div添加select和option

    简单描述:用jQuery给页面添加select下拉框,直接上图 总结:清楚明了^_^

  7. HighCharts基本使用

    一.简叙 HighCharts是一个非常强大的画图插件,在以后的工作汇报,数字展示,它将是一把利器.既然是插件,那么就有它的使用规则,我们只需要遵循它的使用规则,就可以画出我们想要的展示效果了.期待吗 ...

  8. 开启或停止website

    1.添加:Microsoft.Web.Administration 2.代码: static void Main(string[] args) { var server = new ServerMan ...

  9. 步步为营-94-GridView中的DropDownlist值得获取与绑定

    bug场景: 例如这种"计税方式"是下拉列表的,当选择"编辑"时候,数据会丢失 修改方式,前台对应修改 后台代码在databound时候给绑定值 测试效果

  10. IDEA复制项目操作