shiro在web中的应用
在web.xml配置shiroFilte
spring配置文件:
- 数据源
- 配置 securityManager 三个属性①cacheManager缓存管理器②sessionMode sessiom的管理方式③配置realm
- 然后配置直接配置实现了 org.apache.shiro.realm.Realm 接口的 bean
- .配置 CacheManager.
- 配置 LifecycleBeanPostProcessor 可以自定的来调用配置在 Spring IOC 容器中 shiro bean 的生命周期方法
- 启用 IOC 容器中使用 shiro 的注解. 但必须在配置了 LifecycleBeanPostProcessor 之后才可以使用
- 配置 ShiroFilter .
配置哪些页面需要受保护.
以及访问这些页面需要的权限.
1). anon 可以被匿名访问
2). authc 必须认证(即登录)后才可能访问的页面.
3). logout 登出.
4). roles 角色过滤器
Shiro的认证
-
- 获取当前的 Subject. 调用 SecurityUtils.getSubject();
- 测试当前的用户是否已经被认证即是否已经登录调用 Subject 的 isAuthenticated()
- 若没有被认证,则把用户名和密码封装为 UsernamePasswordToken 对象
- 执行登录: 调用 Subject 的 login(AuthenticationToken) 方法.
- 自定义 Realm 的方法, 从数据库中获取对应的记录, 返回给 Shiro.
2). 实现 doGetAuthenticationInfo(AuthenticationToken) 方法.
6由 shiro 完成对密码的比对.
思路:shiro的Subject接收传递到Handler的用户登录信息,判断认证状态,未认证则把信息传到自定义realms(自定义realms 从数据库获取用户对应信息),然后盐值加密 返回一个AuthenticationInfo 给shiro判断是否正确!
学习中,目前只是看了点视频,看了shiro源码里面的快速使用,继续学习