Java web自定义标签按钮级别权限控制完美诠释(jplogic 快速开发平台)

接下来跟大家聊聊JavaWeb中权限控制,往大的方向说可以聊聊整合应用系统中的权限控制。在聊权限控制之前先跟大家聊聊RBAC。那么什么是RBAC呢?RBAC(Role-Based
Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联的,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限。那么什么是角色呢?简单的说其实角色就是某些特定权限的集合,就像oracle数据库的角色一样,新创建session用户是没有任何权限的。如何想用该用户登录oracle数据库,访问特定的“数据库资源”(表、视图、存储过程、触发器、以及一些oracle系统权限对象等)都需要oracle
RDBMS系统内置的超级管理员授予相应的权限之后,该用户才能访问特定的数据库资源。那么角色就可以理解为一定数量的权限的集合,权限的载体。

那么我们该如何表述权限呢?那么在我理论体系中,权限可以分为很多类别,比如在应用功能模块上的动作操作,比如对业务表CRUD操作、打开某个视图(窗口)、上传文件等;应用界面(Ui)上可视化控制,比如界面上菜单显示、界面某个按钮的显示/enable控制,这些都是应用系统中权限控制领域范畴。那么我们在做应用系统的过程中就需要将你的应用中涉及的权限控制事物抽象出来,便于系统中进行逻辑判断。然后基于RBAC,让表述的权限关联我们应用的特性角色即可。简单一句话其实就是把你的应用涉及的权限控制抽象(权限的描述)关联系统中的角色即可。当然你的权限系统足够复杂,适应各种权限控制需求的话。我们可以在RBAC主线基础上扩展其他底层支持。比如角色组、用户组、权限资源扩展的子信息。

说白了权限控制的主线大致为:“人员->用户->角色->权限->权限资源扩展".那么B/S架构应用权限资源扩展包含哪些呢?其实在上边已经说了一些。比如UI方面的有页面菜单、按钮等;功能上的有比如用户的一次action动作。这个action动作包含业务操作上所有可能,如上传、CRUD等;还有就上以上没有提到的,比如我们要控制应用的服务资源(soa)\webservice.这部分涉及分布式权限控制了;当然也可以对应用的数据库访问进行控制(也就是我们通常所说的数据访问权限)。

下面就开始言归正传讲讲Java Web中权限控制。看了很多这方面的应用或者说平台。他们之中的权限控制感觉都不尽如人意。我曾经看过一位架构师的设计平台的权限,让我很不敢恭维。他在关于按钮级别的权限控制的设计中固然把特定的角色写死在页面中。但是我想说的是如果角色写死在页面中,当角色发生改变或者被管理员删除了。那么角色所涉及的权限控制就会失效。一点不灵活。

其实Java web中权限控制要做的很灵活扩展也很好,确实不易!相比.net的winform的权限控制就好涉及多了!那么在Java web中权限控制中的页面按钮级别的权限控制做法最多的是使用自定义标签来进行!传统的通用的标签已经无法满足灵活的权限控制了!其实在Java web领域的页面按钮级别的权限控制需要根据应用前端技术的相应特点来进行设计。现在的管理应用系统前台大部分不是从零开始的界面设计,而是使用一些前端技术来设计管理应用系统的后台UI设计。这样给我们的按钮级别的权限控制带来便易。

那么我们只需要权限值来设定特定UI资源的状态即可!比如按钮的可见性,启用性等。

那么下面来讲讲jplogic的权限控制中的按钮级别的权限控制。说道按钮级别的权限,我们就可以会遇到这么一个问题,那就是我们如何描述页面上权限按钮呢!如何将页面按钮资源关联权限,如何初始化这些按钮权限如何才能更灵活?这些都是需要处理的!有的人可能会说,页面上按钮权限初始化可以同管理页面添加或者写死在系统初始化过程中的某个业务操作上。针对这样的做法我认为极不灵活。jplogic的做法就不是这样。首先每个按钮资源权限的权限记录并不是在开发过程手工在数据库里面添加对应的资源权限记录,也不是在后台的功能管理中新增每个页面按钮对应的资源权限值记录,当然也不是在某个业务“动作”中执行插入界面按钮资源权限值记录。jplogic按钮权限值记录的初始化就只需简单单击鼠标,平台自动从上下文获取每次页面访问临时存放在上文的ui资源权限激励!授权者可以通过友好的授权界面找到他想要授权的按钮资源权限。这样给将来项目的实施带来很大的便利。这样就比很对所谓快速开发平台的权限初始化过程更准确、更简单、更有效、

下面开始说说jplogic的权限控制之按钮级别权限控制。jplogic按钮级别的权限控制基于j2ee 自定义标签技术实现。自定义标签使用可以根据平台的需要指定一些标签规范。也欢迎大伙进入群【376447127】与我交流相关RAD内容。

 首先,第一步:定义页面上按钮级别的权限资源定义。(定义页面按钮权限资源首先需要方面于后期的权限资源搜索、以及授权)

首先得知道页面上按钮位置(这个位置不是所谓”物理上“的位置,及某个路径的位置,而是逻辑上位置,也就是说是这个按钮属于某一个模块,【也就是应用的管理员可以在这个位置找到权限资源,然后将这个权限资源很方便授予某个角色】),如下图所示:

在管理界面上可以很方便变更某个角色对应的页面上某个权限按钮的状态,如可见性、启用性又或者是去掉按钮上的图片等。

在jplogic的做法是这样指定的,根据jplogic的规范只需要在页面上添加如下标签即可:

<JB:ComponentBase id="bomponentBase"  isJudgeSession="true" pageToFormMapping="org.jplogic.system.web.view.webform.SystemParamConfigMngForm" disableContextmenu="false" isLoadingListener="true"></JB:ComponentBase>

其中pageToFormMapping="org.jplogic.system.web.view.webform.SystemParamConfigMngForm"属性指定了该页面上所有按钮所属的模块。在这里可能大家可能会猜想,指定该属性之后,是不是每次访问该页面的时候都会想服务端请求更新或者添加页面上按钮资源权限呢?其实不是。指定该属性只是为了后期初始化页面按钮权限资源时候提供上下文支持。不会影响页面访问性能。

指定完这个属性之后,平台会自动的将页面上的按钮权限资源信息存放至平台上文中。当初始化按钮权限时候只需要从这个上文中取出相应的ui权限资源信息,然后持久化到数据库即可!这样我们就可以在管理端很方便的检索到页面的按钮权限资源了,并且很方便的吧这个权限资源授予某个角色。

第二步:页面按钮权限验证(控制)

当我们需要对页面上按钮进行权限验证的时候只需要在页面上添加如下权限验证标签即可,当然也可以不加。不加的话就会对该区域的按钮进行权限验证(也就是我们在一些业务场景下不需要对一个公用业务按钮进行权限验证,那么这个时候我们就可以指定不需要进行权限验证的按钮权限资源),如下标签代码:

					<JB:UiPermissionControl limitByToolbarId="sys_Param_Toolbar" id="uiPermissionControlId">
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="button" btnSelectName="字典管理工具" imgDisabled="tool.gif" imgEnabled="tool.gif" itemId="0"  optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="separator" imgDisabled="" imgEnabled=""  itemId="1" optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="button" btnSelectName="基础参数设置" imgDisabled="sysset.gif" imgEnabled="sysset.gif" itemId="2"  optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="separator" imgDisabled="" imgEnabled=""  itemId="3" optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="button" btnSelectName="平台元数据信息" imgDisabled="wb.gif" imgEnabled="wb.gif" itemId="4"  optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="separator" imgDisabled="" imgEnabled=""  itemId="5" optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="button" btnSelectName="邮件测试" imgDisabled="mail.gif" imgEnabled="mail.gif" itemId="6"  optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="separator" imgDisabled="" imgEnabled=""  itemId="7" optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="button" btnSelectName="调整皮肤" imgDisabled="model.gif" imgEnabled="model.gif" itemId="8"  optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="separator" imgDisabled="" imgEnabled=""  itemId="9" optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="button" btnSelectName="改变参数性质" imgDisabled="execute.gif" imgEnabled="execute.gif" itemId="10"  optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="separator" imgDisabled="" imgEnabled=""  itemId="11" optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="button" btnSelectName="刷新参数" imgDisabled="refresh.gif" imgEnabled="refresh.gif" itemId="12"  optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="separator" imgDisabled="" imgEnabled=""  itemId="13" optionItems=""></JB:ToolBarCellComponent>
					    <JB:ToolBarCellComponent id="sys_Param_Toolbar" cellType="button" btnSelectName="注册按钮权限" imgDisabled="engine.gif" imgEnabled="engine.gif" itemId="14"  optionItems=""></JB:ToolBarCellComponent>
				    </JB:UiPermissionControl>

从以上中的<JB:UiPermissionControl limitByToolbarId="sys_Param_Toolbar" id="uiPermissionControlId">指定页面上按钮权限资源的权限验证。这样就可以适应页面上复杂的按钮级别权限控制需要。其中imgDisabled和imgEnabled属性指定按钮不同启用状态下的显示图片。开发者可以灵活指定。

如下是页面上按钮权限控制效果图演示:

首选用管理员用户admin给demo测试用户进行用户授权,进入角色授权管理页面授权,单击角色操作权限授权操作:(给用户授予相应的功能模块以及相应的操作权限),如下图:

然后进入单击角色Ui资源视图权限授权进入Ui资源授权界面,给相应的角色授予相应的ui资源权限即可,如下图:

给角色授予相应的权限之后,就可以将该拥有权限的角色授予相应上机用户即可,也就是角色绑定用户,如下图:

然后用户demo用户登录系统检验授权结果,如下图:

以上内容只是jplogic权限控制的部分内容。谢谢大伙的关注,希望以上内容说明对你有说帮助。

时间: 2024-10-27 06:05:57

Java web自定义标签按钮级别权限控制完美诠释(jplogic 快速开发平台)的相关文章

Vue多页面 按钮级别权限控制 directive指令控制

利用driective 构建自己的指令,实现按钮级别权限 项目结构如下: 修改router.js { path: 'schools', name: '列表', component: () => import('./eduAdministration/SchoolList'), meta: { permissions: ['schools'], btnpermissions:['admin','test'], title: '列表', icon: '', scrollToTop: true } }

按钮配置之自定义按钮使用(一)——JEPLUS软件快速开发平台

JEPLUS按钮配置之自定义按钮使用(一) 系统开发过程中无论是表单的默认按钮或是列表的默认按钮以及Action的默认按钮有时候并不能满足我们的业务需求,这个时候就需要我们来自己定义一些按钮来实现我们的业务需求,今天这个笔记就讲解一下我们应该如何自定义按钮以及如何为自定义按钮添加功能逻辑需求. 一.自定义按钮的效果展示 二.自定义按钮的显示样式配置 1.打开功能菜单的配置界面点击"按钮配置"进入功能的按钮配置界面 2.输入按钮的编码时必须要保证按钮的编码必须是唯一,见名知意的命名是最好

struts自定义拦截器--登录权限控制

说明:该自定义的拦截器实现用户登录的权限控制. login.jsp--->LoginAction--重定向-->MainAction--->main.jsp 一.1.总体的步骤: (1).定义拦截器类.LoginInterceptor(完成登录拦截) 方式1:实现com.opensymphony.xwork2.interceptor.Interceptor接口并覆写方法. 方式2:继承com.opensymphony.xwork2.interceptor.AbstractIntercep

Web应用程序系统的多用户权限控制设计及实现-用户模块【7】

前五章均是从整体上讲述了Web应用程序的多用户权限控制实现流程,本章讲述Web权限管理系统的基本模块-用户模块.用户模块涉及到的数据表为用户表. 1.1分组域 为了更规范和方便后期系统的二次开发和维护,对应特定的业务模块采用Area(域)的方式开发,用户模块的开发域如下图所示: 由于在Areas下还建立了一个新的目录SystemManage,故需要改变原来的路由.用户模块的路由文件名称为OperatorManageAreaRegistration.改变路由代码的文件名称为如下: using Sy

杂项-Java:自定义标签

ylbtech-杂项-Java:自定义标签 1.返回顶部 1. 一般我们说自定义标签是指JSP自定义标签.自定义标签在功能上逻辑上与javaBean 类似,都封装Java 代码.自定义标签是可重用的组件代码,并且允许开发人员为复杂的操作提供逻辑名称. JSP开发人员使用标签库创建标签.标签库是按照功能或实现进行分组的自定义标签的集合. 网络上常见的CMS内容管理系统都是采用模板的形式来实现,基本上所有的CMS系统都有一套自己的模板标签书写方法,简称自定义标签. 基本概念 1.标签(Tag): 标

Web应用程序系统的多用户权限控制设计及实现-总结【11】

Web应用程序系统的多用户权限控制设计及实现通过10章内容讲述已经结尾了.写这些博客的目的很简单,方便自己以后参考,也留下自己编程岁月的一些痕迹.对于编程,对于工作,真是心甘情愿的就好. 由于这只是一个案例介绍,在实际应用时,应有不同.至少在项目结构中应有多层分类.由于本系统介绍的方案已经比较老套了,特别是数据处理模块方面,现在更推荐用 Entity Framework的数据库处理方式,应该是更好的,至少在编码上更轻松快捷.实际项目的分类模块如下所示: 对于读过这套方案的读者,我很荣幸.对于提出

Web应用程序系统的多用户权限控制设计及实现-权限模块【10】

前五章均是从整体上讲述了Web应用程序的多用户权限控制实现流程,本章讲述Web权限管理系统的权限配置模块.页面模块涉及到的数据表为权限表.权限配置模块是按照用户组和页面,栏目结合组成的.通过配置一个用户组可以访问的页面即完成了该类型用户的访问权限管理. 1.1权限域 为了更规范和方便后期系统的二次开发和维护,对应特定的业务模块采用Area(域)的方式开发,权限模块的开发域如下图所示: 由于在Areas下还建立了一个新的目录SystemManage,故需要改变原来的路由.权限模块的路由文件名称为R

Web应用程序系统的多用户权限控制设计及实现-栏目模块【8】

前五章均是从整体上讲述了Web应用程序的多用户权限控制实现流程,本章讲述Web权限管理系统的基本模块-栏目模块.栏目模块涉及到的数据表为目录表. 1.1分组域 为了更规范和方便后期系统的二次开发和维护,对应特定的业务模块采用Area(域)的方式开发,栏目模块的开发域如下图所示: 由于在Areas下还建立了一个新的目录SystemManage,故需要改变原来的路由.栏目模块的路由文件名称为pageGroupAreaRegistration.改变路由代码的文件名称为如下: using System.

web 服务器监控状态模块权限控制不严格,导致信息泄露

Apache  服务器状态监控模块开启默认是禁止外网访问,如果更改了权限,可能导致信息泄露 ExtendedStatus On <Location /server-status> SetHandler server-status Order deny,allow #   Deny from all Allow from .example.com </Location> 默认访问地址 http://site/server-status nginx  服务器状态监控模块开启需要配置lo