初印象
作为一个要转后端的人,不了解安全框架怎么能行呢,最近看了些web项目很多都使用shiro,shiro到底好在哪里呢? 本篇博客仅作为个人的shiro学习历程记录。很多内容参考张开涛先生的《跟我学shiro教程》,侵删。
shiro给人的印象是一个简单实用的安全框架,相比于Spring Security,没有那么强大的功能(强大在哪里还需要去学习!)。shiro提供了认证、授权、加密、会话管理等非常贴近实际需求的支持,除此之外还支持web、并发的。作为一个好的框架,shiro也在很多地方添加了用户扩展的支持,比如说登录的认证策略、权限获取等,都是延申的点。
shiro架构
shiro核心:Subject
Subject表示当前和应用交互的用户,是一个抽象概念,这个用户的概念不仅限于人,爬虫等都算在内,Subject是shiro的门面,交由SecurityManager管理。
shiro核心: Security Manager
SecurityManager是shiro的核心,管理所有的Subject,负责认证、授权、会话管理等。
Authenticator:认证器,用于决定怎样是认证通过了,用户可以在这里实现自己的认证策略。
Authrizer:授权器,控制用户能获得哪些权限、进行何种操作。
SessionManager:用于管理session的生命周期。
CacheManager:缓存控制器,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能.
Cryptography:密码模块,里面包含一些加密、解密的组件。
shiro核心:Realm
Realm,域,相当于安全数据源,用于获取用户的安全数据(身份认证、角色权限等),SecurityManager从Realm中获取这些信息。可以是jdbc实现、LDAP实现等,shiro不知道权限角色、认证信息这些是怎样实现的,放在哪里,由用户去实现。可以定义一个或者多个Realm.