黑马程序员技术交流社区
标题: 【郑州校区】bos项目笔记之chapter09_系统分析、环境搭建(3) [打印本页]
作者: 谷粒姐姐 时间: 2018-4-9 11:24
标题: 【郑州校区】bos项目笔记之chapter09_系统分析、环境搭建(3)
三、 ApacheShiro 框架入门
1. Apache Shiro 框架简介和下载导入 实现权限控制, 可以自己写代码实现 (粗粒度权限控制 Filter、 细粒度权限控制 自
定义注解、代理、反射技术)
1、 自己写权限框架
2、 Spring Security (使用复杂, 依赖 Spring )
3、 Apache Shiro (更轻量, 使用更简单, 并不完全依赖 spring,可以独立使用 )
Apache Shiro 体系结构
1、 Authentication 认证 ---- 用户登录,身份识别 who are you?
2、 Authorization 授权 --- 用户具有哪些权限、角色 what can you do ?
3、 Cryptography 安全数据加密
4、 Session Management 会话管理
5、 Web Integration web 系统集成
6、 Interations 集成其它应用,spring、缓存框架
最新版本 1.3.2
参考官方贵方: Apache_Shiro_reference(中文版).pdf
2. Apache Shiro 执行过程分析 和 权限控制主要方式 2.1. Shiro 运行主要运行流程 ApplicationCode 用户编写代码
Subject 就是 shiro 管理的用户
SecurityManager 安全管理器,是 shiro 权限控制核心对象, 在编程时,只需要操作
Subject 方法, 底层调用 SecurityManager 方法,无需直接编程操作 SecurityManager
Realm 应用程序和安全数据之间连接器 ,应用程序 进行权限控制读取安全数据(数据表、文件、网路 … ),通过 Realm 对象完成
登录流程: 应用程序 --- Subject --- SecurityManager --- Realm --- 安全数据
2.2. Shiro 进行权限控制 四种主要方式 :
1、 在程序中 通过 Subject 编程方式进行权限控制
2、 配置 Filter 实现 URL 级别粗粒度权限控制 3、 配置代理,基于注解实现细粒度权限控制
4、 在页面中使用 shiro 自定义标签实现 页面显示权限控制
3. 用户登录功能实现 3.1. 配置 shiro 的 Filter 实现 URL 级别权限控制 1、 配置 web.xml
2、 配置 applicationContext-shiro.xml applicationContext.xml
applicationContext-shiro.xml
配置安全管理器
参考:
anon 未认证可以访问 authc 认证后可以访问 perms 需要特定权限才能访问 roles 需要特定角色才能访问 user 需要特定用户才能访问 port 需要特定端口才能访问 reset 根据指定 HTTP 请求访问才能访问
3.2. 用户登录(认证)功能实现 1、 检查 login.html 表单元素 设置 form 的 action
点击立即登录,提交 form 表单
2、 编写 UserAction 提供 login 登录方法
了解 Shiro 执行流程, 应用程序 --- Subject --- SecurityManager --- Realm 安全数据
3、 自定义 Realm 对象,实现认证方法
自定义 Realm 实现 Realm 接口 (实际开发中,只需要继承 AuthorizingRealm )
将自定义 Realm 注入安全管理器 SecurityManager 当中
DAO 代码
Service 代码
Realm
4、 在 user 表插入一些数据
5、 在 shiroFilter 配置中将 user_login.action 放行
6、 记住当用户名不存在和密码错误时,抛出异常
org.apache.shiro.authc.UnknownAccountException 当认证方法直接返回 null,说明用户名不存在
org.apache.shiro.authc.IncorrectCredentialsException 当返回对象中密码与用户输入密码不一致 密码错误
bos项目笔记之chapter08_系统分析、环境搭建(5)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |