Shiro入门学习

一 、什么是Shiro?

  看一下官网对于 what is Shiro ? 的解释

  Apache Shiro (pronounced “shee-roh”, the Japanese word for ‘castle’) is a powerful and easy-to-use Java security framework (java安全管理框架)that performs authentication(认证), authorization (授权), cryptography (加密), and session management (会话管理)and can be used to secure any application - from the command line applications, mobile applications to the largest web and enterprise applications.

  通过官网的解释,我们可以获得一些信息。

  • Shiro是java安全管理框架
  • Shiro主要可以完成authentication(认证), authorization (授权), cryptography (加密), and session management (会话管理)
  • Shiro可以被用于任何应用,无论是web应用还是手机应用,命令行应用,还是企业应用。

Shiro基本功能图

  Shiro的功能不止只有认证,授权,加密,绘画管理。还包括缓存,与web集成等。

  总结: Shiro是一个基于java开源免费的安全管理框架,Shiro不仅可可以在JavaSE环境下使用,也可以在JavaEE环境下使用,Shiro 可以完成认证、认证、授权、加密、绘画管理、缓存、web集成等。

二、Spring Security 和 Shiro两者有什么区别呢?

  其实学习Shiro的时候,会很容易想起以前学过的另一种java安全管理框架,那就是Spring Security.

  • 根据时间线来说的话,Spring Security出现的更早。
  • Spring Security依赖Spring,但是Shiro不必依赖Spring,可选择范围广
  • Spring Security相对于Shiro来说,学习成本更高,更为复杂

  这些区别决定了Shiro是使用范围更广,更灵活。因此学习Shiro还是很有必要的。

三、Shiro功能学习

  • Authentication(认证)

  对用户的身份进行认证,判断用户是否有相应的身份。比如说,我输入用户名和密码后,验证我这个用户是否存在在数据库中。不存在那就代表,我没有”身份“。

  • Authorization (授权)

  到了授权这一步的时候,用户当然已经经过了上面的”认证“了。授权也也就是权限验证,验证用户是否有某个权限。

  比如我们访问某视频软件的VIP资源的时候,那么系统当然会验证我们是否有权限访问这个资源,这就是权限验证。因为每个系统的权限不一样,有可能这个系统某些资源是只能VIP访问,那个系统某些资源是只能管理员访问。存在多样性,那么关于权限验证的规则当然就需要程序员自己来完成了。

  • session manager (会话管理): 用户登录就是一次会话,会话存放着用户的信息直到用户退出。这里的Session Manager和Java 中的Session概念上没有任何关系。
  • Cryptography (加密): 加密,Shiro中提供了很多中加密的具体实现,比如MD5之类的。可以很好的保护数据的安全性
  • Web Support (Web 支持): Web 支持,可以非常容易的集成到Web 环境;
  • Caching (缓存): Shiro为了提高效率,还支持缓存。比如用户登录后,其用户信息不用每次去查,直接从缓存中获取
  • Concurrency (多线程): shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
  • Testing: 提供测试支持;
  • Run As: 允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
  • Remember Me: 记住我,一次登录后,下次再来的话不用登录了。但是必须注意的是,remember me 并不会记住用户的具体信息

四、Shiro框架学习

  • Subject

  Subject主体,是Shiro中的一个接口。Subject记录了当前操作用户

  • SecurityManager

    

  SecurityManager是一个接口,继承了Authenticator, Authorizer, SessionManager这三个接口。

  安全验证器,是Shiro的核心。用来管理所有Subject的安全认证。SecurityManager可以完成对Subject的认证和授权等。实际上是SecurityManager调用Authenticator进行认证,通过Authorizer进行授权,通过SessionManager进行会话管理。

  • realm

  Realm叫做领域,相当于是数据源。当使用SecurityManager对Subject进行安全管理认证的时候,就需要从Realm中获取用户的信息。

  注意:不要把realm理解成只是从数据源取数据,在realm中还有认证授权校验的相关的代码

  •  Authenticator

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

  •  Authorizer

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

Shiro learning - 入门学习 Shiro中的基础知识(1)的更多相关文章

  1. 转 iOS Core Animation 动画 入门学习(一)基础

    iOS Core Animation 动画 入门学习(一)基础 reference:https://developer.apple.com/library/ios/documentation/Coco ...

  2. JavaSE入门学习7:Java基础语法之语句(下)

    继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for ...

  3. JavaSE入门学习6:Java基础语法之运算符和语句(上)

    继续接着上篇:JavaSE入门学习5:Java基础语法(一)来看Java的基础语法. 五运算符 运算符是一种"功能"符号,用以通知Java进行相关的运算.比方.我们须要将变量age ...

  4. 0.Python 爬虫之Scrapy入门实践指南(Scrapy基础知识)

    目录 0.0.Scrapy基础 0.1.Scrapy 框架图 0.2.Scrapy主要包括了以下组件: 0.3.Scrapy简单示例如下: 0.4.Scrapy运行流程如下: 0.5.还有什么? 0. ...

  5. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

  6. 第76节:Java中的基础知识

    第76节:Java中的基础知识 设置环境,安装操作系统,安装备份,就是镜像,jdk配置环境,eclipse下载解压即可使用,下载tomcat 折佣动态代理解决网站的字符集编码问题 使用request. ...

  7. Shiro learning - 入门案例(2)

    Shiro小案例 在上篇Shiro入门学习中说到了Shiro可以完成认证,授权等流程.在学习认证流程之前,我们应该先入门一个Shiro小案例. 创建一个java maven项目 <?xml ve ...

  8. shiro的入门实例-shiro于spring的整合

    shiro是一款java安全框架.简单而且可以满足实际的工作需要 第一步.导入maven依赖 <!-- shiro --> <dependency> <groupId&g ...

  9. 性能测试学习 第九课--LR12中controller基础知识

    1.设计手工场景,理解集合点的策略 2.添加load generator 一.controller基础知识 1.controller的原理 通过场景设计来模拟用户的真实操作并调用vugen中的脚本,然 ...

随机推荐

  1. MySQL中对字段内容为Null的处理

    使用如下指令,意思就是 select IFNULL(jxjy,0) AS jxjy from yourTable ifnull(a,b) 意思是指:如果字段a为null,就等于b if( sex = ...

  2. 重学JavaScript之面向对象的程序设计(继承)

    1. 继承 ES 中只支持实现继承,而且其实现继承主要依靠原型链来实现的. 2. 原型链 ES中 描述了 原型链的概念,并将原型链作为实现继承的主要方法.其基本思想是利用原型让一个引用类型继承另一个引 ...

  3. 极光推送消息——Alias别称方式(Andirod)

    1.pom文件引入相关jar包 <!--极光推送消息start--> <dependency> <groupId>net.sf.json-lib</group ...

  4. linux 更改文件所属用户及用户组

      在Linux中,创建一个文件时,该文件的拥有者都是创建该文件的用户.该文件用户可以修改该文件的拥有者及用户组,当然root用户可以修改任何文件的拥有者及用户组.在Linux中,对于文件的权限(rw ...

  5. Spring IOC(3)----bean实例化

    前面一节说到invokeBeanFactoryPostProcessors方法的调用来注册bean定义,这次来看看finishBeanFactoryInitialization这个方法实例化非懒加载的 ...

  6. iOS开发进阶(唐巧)读书笔记(一)

    如何提高iOS开发技能 1.阅读博客:https://github.com/tangqiaoboy/iOSBlogCN 40多位iOS开发博主的博客地址 2.读书:每年阅读一本高质量的iOS开发书籍 ...

  7. Word文档操作知识

    Word文档操作知识 #持续更新 本次更新时间:2019-03-06 14:34 一.换行时字体空间过大 问题情景:当我们编写中文的文档时,中间插入了西方的字体或符号,在以它为行尾换行时: 会出现字体 ...

  8. 利用C++实现模块隐藏(R3层断链)

    一.模块隐藏的实现原理 普通API查找模块实现思路:其通过查询在R3中的PEB(Process Environment Block 进程环境块)与TEB(Thread Environment Bloc ...

  9. mac系统Intellij Idea的java环境配置:JDK + Tomcat + Maven

    一.JAVA JDK查看与配置 1.查看java路径详细信息: /usr/libexec/java_home -V 2.java默认路径 jdk1.6: /System/Library/Java/Ja ...

  10. 重构网页过程中的小tips

    1.display为inline-block的元素可以使用virtical-align:middle来使得元素垂直居中对齐 2.在一些按钮标签或者mark标签中,如果文本内容确定不会改变长度的话,可以 ...