教学计划

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.  权限分页查询 

在realm中进行授权

在BOSRealm中实现授权方法:

使用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框架抛出权限不足异常时,跳转到权限不足提示页面

使用shiro提供的页面标签方式权限控制

第一步:在jsp页面中引入shiro的标签库

<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>

第二步:使用shiro的标签控制页面元素展示

总结shiro框架提供的权限控制方式

①URL拦截权限控制(基于过滤器实现)

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

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

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

权限数据管理

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物流项目第十一天的更多相关文章

  1. BOS物流项目第十一天(补充)

    上节课我们在添加权限时,把选择父功能点做成这种效果,不太好,我们进行升级优化. 1.我们对jsp页面进行修改,主要是改了样式. 2.重新编写我们dao层的代码 3.在我们查看父项的时候自动查找子项,我 ...

  2. BOS物流项目心得

    定区管理 (和分区有何区别) : 区域管理针对自然行政区, 行政区域比较大,不可能让取派员去负责整个行政区域, 需要进行分区,将行政区域细分 ,成为很多小区域(分区), 需要为分区知道取派人员 , 在 ...

  3. JAVAEE——BOS物流项目01:学习计划、搭建环境、主页设计(jQuery EasyUI)

    1 学习计划 1.项目概述 项目背景介绍 2.搭建项目开发环境 数据库环境 maven项目搭建 svn环境搭建 3.主页设计(jQuery EasyUI) layout页面布局 accordion折叠 ...

  4. JAVAEE——BOS物流项目03:学习计划、messager、menubutton、登陆拦截器、信息校验和取派员添加功能

    1 学习计划 1.jQuery easyUI messager使用方式 n alert方法 n confirm方法 n show方法 2.jQuery easyUI menubutton使用方式 3. ...

  5. JAVAEE——BOS物流项目09:业务受理需求分析、创建表、实现自动分单、数据表格编辑功能使用方法和工作单快速录入

    1 学习计划 1.业务受理需求分析 n 业务通知单 n 工单 n 工作单 2.创建业务受理环节的数据表 n 业务通知单 n 工单 n 工作单 3.实现业务受理自动分单 n 在CRM服务端扩展方法根据手 ...

  6. 学习BOS物流项目第九天

    1 教学计划 1.业务受理需求分析 a. 业务通知单 b.工单 c.工作单 2.创建业务受理环节的数据表 a.业务通知单 b.工单 c.工作单 3.实现业务受理自动分单 a.在CRM服务端扩展方法根据 ...

  7. JAVAEE——BOS物流项目05:OCUpload、POI、pinyin4J、重构分页代码、分区添加、combobox

    1 学习计划 1.实现区域导入功能 n OCUpload一键上传插件使用 n 将文件上传到Action n POI简介 n 使用POI解析Excel文件 n 完成数据库操作 n 使用pinyin4J生 ...

  8. JAVAEE——BOS物流项目08:配置代理对象远程调用crm服务、查看定区中包含的分区、查看定区关联的客户

    1 学习计划 1.定区关联客户 n 完善CRM服务中的客户查询方法 n 在BOS项目中配置代理对象远程调用crm服务 n 调整定区关联客户页面 n 实现定区关联客户 2.查看定区中包含的分区 n 页面 ...

  9. JAVAEE——BOS物流项目10:权限概述、常见的权限控制方式、apache shiro框架简介、基于shiro框架进行认证操作

    1 学习计划 1.演示权限demo 2.权限概述 n 认证 n 授权 3.常见的权限控制方式 n url拦截权限控制 n 方法注解权限控制 4.创建权限数据模型 n 权限表 n 角色表 n 用户表 n ...

随机推荐

  1. jQuery设置div的自适应布局

    一.HTML代码: <div class="ui-wraper" id="Wraper"> </div> 二.CSS代码: html { ...

  2. Python ————反射机制

    python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删除成员. ...

  3. android 开发 实现一个app的引导页面,使用ViewPager组件(此引导的最后一页的Button会直接写在最后一页布局里,跟随布局滑进滑出)

    基本ViewPager组件使用方式与我之前写的https://blog.csdn.net/qq_37217804/article/details/80332634 这篇博客一致. 下面我们将重点详细解 ...

  4. UiAutomator 代码记录 : 遍历桌面

    package test_one; import java.lang.*; import java.io.File; import com.android.uiautomator.core.UiDev ...

  5. Windows下GO开发环境配置

    GO下载                 https://golang.org/dl/ IDE-goland下载    http://www.jetbrains.com/go/ 本次安装go1.9.3 ...

  6. fabric-ca1.03安装

    前面的文档已经成功的安装了fabric1.0.1的e2e例子.之后代码换成1.0.3版本按步骤重新安装一下,就可以切换到1.0.3了.1.0.3的脚本和启动命令没有变化,还是用的1.0.1的. 1.准 ...

  7. activiti explorer5.22.0源代码解读

    请求通过ExplorerApplicationServlet(AbstractApplicationServlet.service()方法)进入web系统中. Activiti Explorer的应用 ...

  8. <转>如何用C++实现自动微分

    作者:李瞬生转摘链接:https://www.zhihu.com/question/48356514/answer/123290631来源:知乎著作权归作者所有. 实现 AD 有两种方式,函数重载与代 ...

  9. 【转载】Putty出现 Network error:Software caused connection abort

    一.putty發生 network error 开始菜单进入regedit,尋找 HKEY_CURRENT_USER\Software\SimonTatham 并把这个目录下的子目录全部删除,删除前务 ...

  10. abc高级bash shell编程

    http://www.pythoner.com/122.html     abc高级bash shell编程