About Shiro 基础1
简介:Apache Shiro是Java的一个安全框架,类似于Spring Security。
基本构成:
Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;
Session Manager:会话管理;
Cryptography:加密;
Web Support:Web支持,可以非常容易的集成到Web环境;
Caching:缓存;
Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
Testing:提供测试支持;
Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。
主要用到的对象:
Subject 主体 由SecurityManager管理
SecurityManager:安全管理器 Shiro的核心(如果学习过SpringMVC,你可以把它看成DispatcherServlet前端控制器)
Realm:域 用来确定用户是否合法 可以把Realm看成DataSource,即安全数据源。
Authenticator:认证器
Authrizer:授权器;
CacheManager:缓存控制器,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能
Cryptography:密码模块,Shiro提高了一些常见的加密组件用于如密码加密/解密的。
实现用户的认证和授权
我们可以创建一个XXXRealm类继承Shiro的AuthorizingRealm
重写他的doGetAuthorizationInfo方法对用户进行授权:
返回一个 Authorizationinfo ,这个info对象里可以用setRole,addPerms等方法对用户进行添加角色,添加权限等操作,
Role,Perms的参数可以是String,也可以是个hashset
重写doGetAuthenticationInfo方法对用户进行认证。