当前位置: 首页 > news >正文

SpringMVC3.1.1+Spring3.1.1+Hibernate4+Velocity+EasyUI+ZTree实现RBAC基于角色的访问控制(二)...

SpringMVC3.1.1+Spring3.1.1+Hibernate4+Velocity+EasyUI+ZTree实现RBAC基于角色的访问控制(二)


接着上文的写,我们来看看实体之间的关系,一共有五张数据库表,用户表、角色表、资源表,还两个关联表。


解释下图,一个用户关联一个角色(也可以关联多个,本文为了简单,只关联一个。),一个角色关联多种资源,这里的资源可以理解为我们的系统里面要执行的操作,比如一个添加用户的saveUser.do等。如图1所示。




wKiom1ODR8uDrzp7AAGlgk1phgg122.jpg

图1


先来看看大致实现了的效果图吧,首先是资源管理。对于资源的增、删、改、查。如图2所示。

wKioL1ODTHbxUD4DAAEKRNO4-_o063.jpg

图2

图2使用的是ztree来实现的,是动态使用json数据构造的一颗树。关于ztree的使用,后续的文章会说明,其实官方的文档写的就已经很详细了。图2中所示的“+”号,表示添加资源,后面两个图标分别是修改资源、删除资源,如果删除根节点,则所有的子节点、孙子节点都删除。删除之前给用户提示。

 这里说明下的是,这个ztree是可以拖拽子节点的,我这个实例里面没有实现这个功能,不过这个功能实现起来也简单,参见官方文档。


图3所示的是,添加角色功能,添加角色,同时给角色关联相应的资源。这个树,也是动态的构造出来的。

wKiom1ODS6SB3KDJAAG9wtB0lps847.jpg

图3


图4所示的是给用户授权,选择用户的角色,然后保存几个,这个用户就关联了角色,并拥有了角色相应的权限。这个下拉的菜单也是动态填充的。


wKioL1ODSnKjP-gdAACb9MRMIv4117.jpg

图4

关于图5 就是角色列表,用于管理,没有什么太多的需要说明的。


wKiom1ODTMHCUngDAAGBYGMTsNQ205.jpg

图5


本系列文章,想实现的功能是,对于没权限的用户来说,登录进系统后,

1、无权限的不显示

    这种是最基本的权限的处理了,这里会借助velocity来实现。

2、无权限,登录之后,在地址栏输入xxx.do 同样也要拦截提示用户无权限。

   关于第二点,有的只是做了针对无权限不显示的这种,其实这种很明显有一个缺点,就是,如果用户登录之后,且没对某一资源操作的权限,但是,他知道你请求的.do的地址,有的同志会说,我的action 其他人怎么会知道,其实,一般多猜测,借助第三方工具也是可以弄到的。


本文到此结束,下面的文章,讲开始整个系统的构建。






 本文转自 w156445045 51CTO博客,原文链接:http://blog.51cto.com/enetq/1417352,如需转载请自行联系原作者

相关文章:

  • 设置RMAN的备份路径
  • uboot移植(三)——uboot mkconfig脚本分析
  • .NET文档生成工具ADB使用图文教程
  • Java中Enum枚举的使用
  • 【解决数据中心网速慢的八个检查必备步骤】
  • Centos 5.6 下安装XEN虚拟机以及EMOS
  • UVA1339 UVALive3213 POJ2159 ZOJ2658 Ancient Cipher【密码】
  • UVALive 4660 A+B
  • 切割Nginx日志的脚本
  • pg 学习资料
  • Ntp配置文件详解
  • httpd 启动报错“”Permission denied: make_sock: could not bind to address [::]:80“”
  • 定制yum仓库
  • WMIC Query SCSI Info
  • 基于Microchip单片机的触摸感应技术
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • Angular4 模板式表单用法以及验证
  • conda常用的命令
  • Laravel 中的一个后期静态绑定
  • mysql 5.6 原生Online DDL解析
  • MySQL用户中的%到底包不包括localhost?
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Transformer-XL: Unleashing the Potential of Attention Models
  • webpack4 一点通
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 给初学者:JavaScript 中数组操作注意点
  • 经典排序算法及其 Java 实现
  • 前端技术周刊 2019-01-14:客户端存储
  • 什么软件可以剪辑音乐?
  • 微服务核心架构梳理
  • 我感觉这是史上最牛的防sql注入方法类
  • ​ArcGIS Pro 如何批量删除字段
  • #162 (Div. 2)
  • (2)Java 简介
  • (3)nginx 配置(nginx.conf)
  • (C++17) optional的使用
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (安卓)跳转应用市场APP详情页的方式
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转)四层和七层负载均衡的区别
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net 流——流的类型体系简单介绍
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • /var/lib/dpkg/lock 锁定问题
  • [1] 平面(Plane)图形的生成算法
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [C/C++] -- 二叉树
  • [C/C++]关于C++11中的std::move和std::forward
  • [C/C++]数据结构 栈和队列()