BOS物流项目第十一天
教学计划
1、在realm中进行授权
2、使用shiro的方法注解方式权限控制
a. 在spring文件中配置开启shiro注解支持
b. 在Action方法上使用注解
3、使用shiro的标签进行权限控制
a. 在页面引入shiro的标签库
b. 在页面中使用标签
4、总结shiro提供的权限控制方式
a. URL拦截权限控制
b. 方法注解权限控制
c. 页面标签权限控制
d. 代码级别权限控制(了解)
5、权限管理
a. 初始化权限数据
b. 添加权限功能
c. 权限分页查询
1 在realm中进行授权
在BOSRealm中实现授权方法:

2 使用shiro的方法注解方式权限控制
第一步:在spring配置文件中开启shiro注解支持
在application.xml中加入下面代码。
<!-- 开启shiro框架注解支持 -->
<bean id="defaultAdvisorAutoProxyCreator"
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
<!-- 必须使用cglib方式为Action对象创建代理对象 -->
<property name="proxyTargetClass" value="true"/>
</bean> <!-- 配置shiro框架提供的切面类,用于创建代理对象 -->
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"/>
第二步:在Action的方法上使用shiro注解

第三步:在struts.xml中配置全局异常捕获,当shiro框架抛出权限不足异常时,跳转到权限不足提示页面

3 使用shiro提供的页面标签方式权限控制
第一步:在jsp页面中引入shiro的标签库
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
第二步:使用shiro的标签控制页面元素展示

4 总结shiro框架提供的权限控制方式
①URL拦截权限控制(基于过滤器实现)

②方法注解权限控制(基于代理技术实现)

③页面标签权限控制(标签技术实现)

④ 代码级别权限控制(基于代理技术实现)

5 权限数据管理
5.1 初始化权限数据
当项目上线后,如果正常运行,需要依赖一些基础数据支持。权限数据,就属于基础数据,因为系统的菜单是从权限表查询获得的。一般会提供sql脚本文件,导入基础数据。


5.2 添加权限数据
页面:WEB-INF/pages/admin/function_add.jsp
修改jsp页面

先实现父功能点下拉框有数据可选择,然后可提交保存表单。
第一步:修改页面中父功能点对应的combobox,修改URL地址


第二步:创建FunctionAction、Service、Dao,查询所有的权限,返回json
action代码:

第三步:配置struts.xml

效果图如下:

第四步:为添加页面中保存按钮绑定事件,进行校验,如果校验通过就提交表单


第五步:在FunctionAction中创建add方法,添加权限
action代码:

service代码:

5.3 权限分页查询
第一步:修改页面中datagrid的URL地址

第二步:在Action中提供分页查询方法

总结
总的来说,自己对于代码还是不太熟,有时候还要再去参考才能写出来。
BOS物流项目第十一天的更多相关文章
- BOS物流项目第十一天(补充)
上节课我们在添加权限时,把选择父功能点做成这种效果,不太好,我们进行升级优化. 1.我们对jsp页面进行修改,主要是改了样式. 2.重新编写我们dao层的代码 3.在我们查看父项的时候自动查找子项,我 ...
- BOS物流项目心得
定区管理 (和分区有何区别) : 区域管理针对自然行政区, 行政区域比较大,不可能让取派员去负责整个行政区域, 需要进行分区,将行政区域细分 ,成为很多小区域(分区), 需要为分区知道取派人员 , 在 ...
- JAVAEE——BOS物流项目01:学习计划、搭建环境、主页设计(jQuery EasyUI)
1 学习计划 1.项目概述 项目背景介绍 2.搭建项目开发环境 数据库环境 maven项目搭建 svn环境搭建 3.主页设计(jQuery EasyUI) layout页面布局 accordion折叠 ...
- JAVAEE——BOS物流项目03:学习计划、messager、menubutton、登陆拦截器、信息校验和取派员添加功能
1 学习计划 1.jQuery easyUI messager使用方式 n alert方法 n confirm方法 n show方法 2.jQuery easyUI menubutton使用方式 3. ...
- JAVAEE——BOS物流项目09:业务受理需求分析、创建表、实现自动分单、数据表格编辑功能使用方法和工作单快速录入
1 学习计划 1.业务受理需求分析 n 业务通知单 n 工单 n 工作单 2.创建业务受理环节的数据表 n 业务通知单 n 工单 n 工作单 3.实现业务受理自动分单 n 在CRM服务端扩展方法根据手 ...
- 学习BOS物流项目第九天
1 教学计划 1.业务受理需求分析 a. 业务通知单 b.工单 c.工作单 2.创建业务受理环节的数据表 a.业务通知单 b.工单 c.工作单 3.实现业务受理自动分单 a.在CRM服务端扩展方法根据 ...
- JAVAEE——BOS物流项目05:OCUpload、POI、pinyin4J、重构分页代码、分区添加、combobox
1 学习计划 1.实现区域导入功能 n OCUpload一键上传插件使用 n 将文件上传到Action n POI简介 n 使用POI解析Excel文件 n 完成数据库操作 n 使用pinyin4J生 ...
- JAVAEE——BOS物流项目08:配置代理对象远程调用crm服务、查看定区中包含的分区、查看定区关联的客户
1 学习计划 1.定区关联客户 n 完善CRM服务中的客户查询方法 n 在BOS项目中配置代理对象远程调用crm服务 n 调整定区关联客户页面 n 实现定区关联客户 2.查看定区中包含的分区 n 页面 ...
- JAVAEE——BOS物流项目10:权限概述、常见的权限控制方式、apache shiro框架简介、基于shiro框架进行认证操作
1 学习计划 1.演示权限demo 2.权限概述 n 认证 n 授权 3.常见的权限控制方式 n url拦截权限控制 n 方法注解权限控制 4.创建权限数据模型 n 权限表 n 角色表 n 用户表 n ...
随机推荐
- sql server与C#中的字符串相等等效写法
sql server两个字段相等判断默认不区分大小写,并且字符串进行Unicode规范化处理. 等效c#中的相等为s=="字符".ToLower().Normalize(Syste ...
- css(层叠样式表)属性
CSS属性相关 宽和高 width属性可以为元素设置宽度. height属性可以为元素设置高度. 块级标签才能设置宽度,内联标签的宽度由内容来决定. 字体属性 文字字体 font-family可以把多 ...
- JavaScript简单的实例应用
1.显示当前时间: <!doctype> <html> <head> <meta charset='utf-8'> <script type='t ...
- python requests 发起http POST 请求
python requests 发起http POST 请求,带参数,带请求头: #!/usr/bin/env python # -*- coding: utf-8 -*- import reques ...
- 输入框占位符placeholder
占位符placeholder的益处不用多说,但是很不幸的是,在IE8之前的浏览器里是无法实现placeholder这一属性的,所以在需要兼容IE8之前的浏览器的情况下,我们不得不想办法模拟实现plac ...
- js 数组的crud操作
增加push(); 向数组尾添加元素unshift(); 向数组头添加元素向数组指定下标添加元素:可以用Array提供的splice(); var arr = ['a','b','c']; arr.s ...
- 安卓手机H5底部fix定位,呼出键盘底部会上浮解决办法
<script type="text/javascript">var windowInnerHeight = window.innerHeight; //获取当前浏览器 ...
- OpenGL Hello World
▶ OpenGL 的环境配置与第一个程序 ● CUDA 中自带 OpenGL 需要的头文件和库,直接拉进项目里边去就行 ● VS项目属性右键,属性,C/C++ 目录,包含目录,添加 CUDA 的头文件 ...
- 《算法》第四章部分程序 part 3
▶ 书中第四章部分程序,加上自己补充的代码,随机生成各类有向图 ● 随机生成有向图 package package01; import edu.princeton.cs.algs4.StdOut; i ...
- iOS基础知识之排序
1.字符串比较 - (NSComparisonResult)compare:(NSString *)str; 例如: NSString *str1 = @"zhangsan"; N ...