博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shiro基础
阅读量:5894 次
发布时间:2019-06-19

本文共 2083 字,大约阅读时间需要 6 分钟。

hot3.png

Demo下载:

  访问密码 f44d (注意:charpter2是身份验证,charpter3是授权)

文档下载:

  访问密码 d716

注意:这里是用Maven做的,所以不想用Maven下载对应jar就可以了。

210632_y7pE_2472104.png

jar下载:  访问密码 27d9

sql下载:  访问密码 9c3a

1、Authentication :身份认证/登录,验证用户是不是拥有相应的身份;2、Authorization :授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;3、Session Manager :会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的;4、Cryptography :加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;5、Web Support :Web 支持,可以非常容易的集成到 Web 环境;6、Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,提高效率;7、Concurrency :shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;8、Testing :提供测试支持;9、Run As :允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;10、Remember Me :记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。注意:记住一点,Shiro  不会去维护用户、维护权限;这 些需要我们 自己去 设计/ 提供 ; 然后通过相应的 接口注入给 给 Shiro
1、Subject :主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是 Subject,如网络爬虫,机器人等;即一个抽象概念;所有 Subject 都绑定到 SecurityManager,与 Subject 的所有交互都会委托给 SecurityManager;可以把 Subject 认为是一个门面;SecurityManager 才是实际的执行者;2、SecurityManager :安全管理器;即所有与安全有关的操作都会与 SecurityManager 交互;且它管理着所有 Subject;可以看出它是 Shiro 的核心,它负责与后边介绍的其他组件进行交互,如果学习过 SpringMVC,你可以把它看成 DispatcherServlet 前端控制器;3、Realm: : 域, Shiro 从从 Realm 获取安全数据 (如用户、 角色、 权限) , 就是说 SecurityManager要验证用户身份, 那么它需要从 Realm 获取相应的用户进行比较以确定用户身份是否合法; 4、SessionDAO: : DAO 大家都用过, 数据访问对象, 用于会话的 CRUD, 比如我们想把 Session保存到数据库,那么可以实现自己的 SessionDAO,通过如 JDBC 写到数据库;比如想把Session 放到 Memcached 中,可以实现自己的 Memcached SessionDAO;另外 SessionDAO中可以使用 Cache 进行缓存,以提高性能;
 身份验证1、principals:身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。一个主体可以有多个 principals, 但只有一个 Primary principals, 一般是用户名/密码/手机号。2、credentials:证明/凭证,即只有主体知道的安全值,如密码/数字证书等。
授权规则: “资源标识符:操作:对象实例 ID” 即对哪个资源的哪个实例可以进行什么操作。其默认支持通配符权限字符串,“:”表示资源/操作/实例的分割;“,”表示操作的分割;“*”表示任意资源/操作/实例。 例子:如“user:view”等价于“user:view:*”;而“organization”等价于“organization:*”或者“organization:*:*”。可以这么理解,这种方式实现了前缀匹配。另外如“user:*”可以匹配如“user:delete”、“user:delete”可以匹配如“user:delete:1”、“user:*:1”可以匹配如“user:view:1”、“user”可以匹配“user:view”或“user:view:1”等。即*可以匹配所有,不加*可以进行前缀匹配;但是如“*:view”不能匹配“system:user:view”,需要使用“*:*:view”,即后缀匹配必须指定前缀(多个冒号就需要多个*来匹配)

身份验证:

210318_o728_2472104.png

授权:

204715_mlhi_2472104.png

204809_GvxR_2472104.png

配置文件:

205625_AVZT_2472104.png

配置前缀意义:[]

210051_9i3m_2472104.png

 

转载于:https://my.oschina.net/u/2472104/blog/530577

你可能感兴趣的文章
redhat6.5下安装配置kvm虚拟机
查看>>
查看CPU参数
查看>>
IIS 不用URL重定向搞定http强制跳转至https
查看>>
Asp.net 中的 Debug.Assert
查看>>
NFS 挂载参数
查看>>
Chrome浏览器离线安装包官方地址
查看>>
一个配置比较全的log4j.xml文件(一)
查看>>
shell基础练习题
查看>>
修改ulimit限制
查看>>
docker network docs
查看>>
[windows]常用命令行命令
查看>>
ZBUS项目结构概貌
查看>>
开始nodejs+express的学习+实践(3)
查看>>
敏捷个人2012.8月份线下活动报道:Toastmasters、团队管理
查看>>
xssfilter-代码段
查看>>
Python爬虫入门教程 12-100 半次元COS图爬取
查看>>
关于删除数据报错ora_02292
查看>>
Windows 进程激活服务
查看>>
JSON文件编辑
查看>>
去除 flex chart 水印
查看>>