Shiro安全框架之基础原理和案例

学习Shiro的时候,阅读过很多优秀的文章,比如《跟我学Shiro》系列等等 。于是结合自己的实际情况,自己整理了一部分 。这是第一篇文章,旨在从基础案例出发了解其原理 。
一、认识Shiro
【Shiro安全框架之基础原理和案例】1、简介
Shiro是Apache的一个安全权限框架,比如说我们都遇到过这样一种情况,我们下载完某个软件的时候,然后登陆 。突然发现我们可以使用好几种身份去登陆 。比如说游客、会员身份、普通用户等 。

Shiro安全框架之基础原理和案例

文章插图
 
我们使用的身份不同,展示的界面是不一样的 。Shiro就是要完成这样一个功能,用户以不同的身份登陆,Shiro安全验证之后展示不同的界面 。
他的重要性就不说了,只要是个好一点的网站或者是App都会使用到 。
2、功能简介
上面的例子只是让我们认识一下Shiro 。我们给出一张完整的功能图,整体来认识一下:
Shiro安全框架之基础原理和案例

文章插图
 
从上面这张图我们可以看到,主要包含了两大部分 。
第一部分:primary concerns(主要解决的问题)
(1)Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
(2)Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限,比如说王者荣耀里面普通用户没有皮肤,交了钱就可以有使用会员皮肤的权限了 。
(3)Session Manager:会话管理,用户登录就是一次会话,在没有退出之前,它的所有信息都在会话中;
(4)Cryptography:加密,保护数据的安全性 。这个如何理解呢?平时自己学习的时候,往MySQL数据库里面都是存储的用户名和密码,但是真实情况下肯定就不是这样了,只保存加密后的密码 。
第二部分:支持的技术
(1)Web Support:Web支持;
(2)Caching:缓存用户的登录、角色、权限信息;
(3)Concurrency:支持多线程并发验证,一个线程能把权限自动传播到另一个线程;
(3)Testing:测试支持;
(4)Run As:允许一个用户假装为另一个用户的身份进行访问;
(5)Remember Me:记住我,即一次登录后,下次再来的话不用登录了 。淘宝网经常看到 。
3、实现原理
上面我们知道了Shiro能干什么,这一小节主要解决的是如何做的问题 。
Shiro安全框架之基础原理和案例

文章插图
 
这张图结合了外部结构和内部结构,我们认识一下里面涉及到的概念 。
(1)Subject
他指代的是当前用户,比如说游客、VIP等,当然可以不是具体的人 。也可以某个机器 。
(2)Security Manager
他表示的是安全管理器,用户使用Shiro不同的功能,安全管理器就调用不同的模块进行管理 。比如说你想要验证当前用户是否有权限登录系统 。安全管理区就会调用Authenticator 。在比如说你想让当前的用户可以使用那些功能,安全管理器就会调用Authrizer 。
(3)Realm
realm表示数据源,比如说你要想验证用户身份是游客还是会员,realm就提前把这些用户和权限先保存了,Shiro然后调用realm里面的数据进行验证 。
OK,这就是其基本原理很简单 。下面我们就看一个例子,看看Shiro到底如何使用 。
二、基础案例
第一步:添加jar包或者是依赖
我是在maven进行管理的,所以你只需要添加以下依赖即可
Shiro安全框架之基础原理和案例

文章插图
 
如果你没有使用maven,那就直接在百度上搜索下列jar包导入eclipse中即可 。
Shiro安全框架之基础原理和案例

文章插图
 
第二步:在Src目录下面创建log4j.properties
这个文件是和日志相关的文件 。直接复制粘贴即可
Shiro安全框架之基础原理和案例

文章插图
 
第三步:在src下面创建shiro.ini文件
这个文件里面保存了Shiro的各种信息,他的作用就好比是realm(暂时先这样理解) 。
Shiro安全框架之基础原理和案例

文章插图
 
第四步:创建Test.JAVA用户登录,开始验证
Shiro安全框架之基础原理和案例

文章插图
 

Shiro安全框架之基础原理和案例

文章插图
 


推荐阅读