1.shiro
安全+权限框架,不光光是权限,而且是一个安全框架
这里额外要声明一下:用户登陆以后,是可以根据用户的权限,给用户设置权限页面的,但是,关于权限分配的代码,明显不应该由后台来写,这里还是要用vue来写,学习shiro的目的主要在于进行校验,而如何用vue进行用户的权限分配来控制其访问,这个方面目前还是一片空白
2.主要功能
①Authentication(登录认证)
②Authorization(授权)
③SessionManagement
④cryptography(加密)
3.shiro架构的一些组成
①Subject:任何可以与应用交互的"用户"
②SecurityManager:相当于SpringMVC里面的DispatcherServlet(前端控制器);是shiro的心脏,所有具体的交互都通过SecurityManager进行控制;它管理所有的subject、且负责进行认证、授权、会话及缓存的管理
③Authenticator:负责Subject认证,是一个扩展点,可以自定义实现;可以使用认证策略(Authentication Strategy),自定义什么情况下,用户认证通过
④Authorizer:授权器,即访问控制器,用来决定主体是否有权限进行相应的操作;即控制用户可以访问哪些功能
⑤Realm:可以有1个或者多个Realm,可以认为是安全实体数据源,即用于获取安全实体的,可以是JDBC实现,也可以是内存实现;由用户提供,所以一般在应用中都需要实现自己的Realm
⑥SessionManager:管理Session生命周期的组件,而shiro不仅仅可以在web下用,也可以在普通的se中用
⑦CacheManager:缓存控制器,来管理如:用户、角色、权限等缓存;因为这些数据很少改变,放到缓存中后可以提高访问性能
⑧Cryptography:密码模块,shiro会提供一些常见的加密组件
4.jar包
在本demo里面exclusion里面写了slf4j,但是实际上shiro是需要slf4j以及log4j的,这里把视频教程里面的需要的jar包全部给列出来-->
-shiro-all-1.3.2.jar
-log4j-1.2.15.jar
-slf4j-api-1.6.1.jar
-slf4j-log4j12-1.6.1.jar
5.配置文件
在视频里面是还有shiro.ini的,但是demo里面只有shiro的xml配置文件
这里必须配置log4j,关于log4j的警告,不着急处理
6.一般流程
①创建Subject
②判断是否已经认证(登录),如果没有认证,把username和pwd封装在一个usernamePasswordToken对象里面
③用这个token进行登录
④session,关于session,是保存在服务端的,现在往session里面存一组map,那么,取得时候一样可以取出来,这就是之前验证CAPTCHA的做法
⑤currentUser这对象,之前是Subject的实例,现在判断用户是否授权(登录),就是用的这个实例
⑥RememberMe就是常见的,如果用户勾选了记住我,那么下次就会自动登录
⑦currentUser(Subject)在login的时候会抛几种异常:
-->UnknowAccountException:没有指定的账户
-->IncorrectCredentialException:凭证异常(账户存在,密码错误)
-->LockedAccountException:用户被锁定的异常
-->AuthenticationException:上面所有异常的父类,还有一些异常暂时不看了
7.role
关于shiro的角色问题,现在单独拿出来讲
currentUser.hasRole可以判断登陆的用户属于哪个角色
8. 具备某项许可
currentUser.isPermitted()
后面写的应该是具备该role的用户可以做的事情的权限
这里的意思是,允许对winnebago这个类型的drive的实例做eagle5这个事
以上就是一种“行为”
9.登出
Subject的logout
关于shiro以后在spring里面的注解等后续再看