shiro(1) 介绍

一、什么是shiro
(1)属性:java框架
(2)用途:身份验证、用户授权、加密、会话管理
(3)优点:轻量、易用


二、三大组件
(1)subject:代表当前主体,与当前应用交互的任何东西都是subject;
(2)SecurityManager :安全管理器,所有有关安全的操作均与此有关。是shiro核心,负责与其他组件交互。
(3)Realms:域。Shiro 从 Realm 获取安全数据(如用户、角色、权限),就是说 SecurityManager 要验证用户身份,那么它需要从 Realm 获取相应的用户进行比较以确定用户身份是否合法,也需要从 Realm 得到用户相应的角色/权限进行验证用户是否能进行操作。
举个例子:

小明,小红、小强和小刚买火车票回家,此时整个火车站(包括售票机,工作人员,火车)都属于subject,与用户进行交互。
进入火车站时需要检票,检票人员需要核对票的有效性,发现小刚的票是假的,就拒绝他进入。核票时,需要从数据库获取信息,此时数据库就是,用于提供用户信息。
进入候车厅后,小强突然大发雷霆,随意伤人,被巡逻的安保人员扣下。此时安保人员充当SecurityManager ,用来控制操作安全。


三、其他组件
Authenticator:认证器,用于用户身份确认。相当于检票人员。
Authorizer:授权器,用于判断用户是否有权限操作。比如,小红是一等座,小明是无座,小明若是强行占座,就会被抓起来。
Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;小明到站后,再想上火车,就必须再买票检票。
Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;火车票上的信息都会进行加密处理,防止坏人获取。
CacheManager:缓存管理,将用户权限数据存储在缓存,这样可以提高性能。列车员会进行用户登记,登记过一次后就不再查票了。
Cryptography即密码管理,shiro提供了一套加密/解密的组件,方便开发。比如提供常用的散列、加/解密等功能。比如火车票上的二维码,扫码时可以获取当前车次信息。
原文地址:https://www.cnblogs.com/miys/p/10538680.html