权限 订阅
权限是指为了保证职责的有效履行,任职者必须具备的,对某事项进行决策的范围和程度。 展开全文
权限是指为了保证职责的有效履行,任职者必须具备的,对某事项进行决策的范围和程度。
信息
中文名
权限
外文名
privilege
词    性
名词
释    义
职能权利范围
权限含义
1、职能权利范围2、在法律规定的权限内。职权范围。权限是指为了保证职责的有效履行,任职者必须具备的,对某事项进行决策的范围和程度。它常常用“具有批准……事项的权限”来进行表达。
收起全文
精华内容
参与话题
问答
  • 常见模块设计--权限管理(一)

    万次阅读 多人点赞 2017-05-31 23:29:57
    也就是说一个用户可以有多个角色,一个角色可以有多个权限,通过将角色和权限分离开来提高设计的可扩展性,通常一个用户有多个角色,一个角色也会属于多个用户(多对多),一个角色有多个权限,一个权限也会属于多个...

    1.基于 RBAC(Role-based Access Control)权限访问控制。也就是说一个用户可以有多个角色,一个角色可以有多个权限,通过将角色和权限分离开来提高设计的可扩展性,通常一个用户有多个角色,一个角色也会属于多个用户(多对多),一个角色有多个权限,一个权限也会属于多个角色(多对多)。

    2.最简单版本
    假设:我们拿到一个用户对象,
    可以通过:用户id –>角色id–>角色名称(什么角色)–>权限id –> 权限标识 –>获取权限。最终获取权限获取角色信息。
    这里写图片描述
    角色:可以简单理解为许多权限的集合。比如二级管理员,三级管理员。

    3.用户组模式
    如果用户数量比较庞大,可以加入用户组模式。需要给用户分组,每个用户组内有多个用户,可以给用户授权外,也可以给用户组授权。最终用户拥有的所有权限 = 用户个人拥有的权限+该用户所在用户组拥有的权限。(这个设计类似 svn 中的用户权限,比如,将一个svn用户加入到 group中,然后设置group的权限,以后加入更多的用户,就不用再一一设置用户的权限了。)

    这里写图片描述

    4.权限分类
    大部分是针对功能模块,比如对信息记录的增删改(信息状态修改,文件的删除修改等),菜单的访问,输入框,按钮的可见性,是否可以新增下级管理员等。有些权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等作为另一类,这样构成“用户-角色-权限-资源”的授权模型。而在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便捷性和易扩展性。

    这里写图片描述

    5.完整版
    请留意权限表中有一列“权限类型”,我们根据它的取值来区分是哪一类权限,如“MENU”表示菜单的访问权限、“OPERATION”表示功能模块的操作权限、“FILE”表示文件的修改权限、“ELEMENT”表示页面元素的可见性控制等。

    优点:(1)不需要区分哪些是权限操作,哪些是资源,(实际上,有时候也不好区分,如菜单,把它理解为资源呢还是功能模块权限呢?)。
    (2)方便扩展,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表“权限XX关联表”,并确定这类权限的权限类型字符串。

    这里要注意的是,权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。(文件、页面权限点、功能操作等同理)。也就是每添加一个菜单,就得同时往这三个表中各插入一条记录。这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联,此时,须在权限表中新增一列用来保存菜单的ID,权限表通过“权限类型”和这个ID来区分是种类型下的哪条记录。

    这里写图片描述

    展开全文
  • 权限设计-系统登录用户权限设计

    万次阅读 多人点赞 2018-01-08 09:56:06
    1. 权限等级不同:公司领导登录后可查看所有员工信息,部门领导登录后只可查看本部门员工的信息,员工登录后只可查看自己的信息; 2. 访问权限不同:如公司领导登录后,可查看员工薪水分布界面,而员工则不能看到...
    需求分析—场景

    假设需要为公司设计一个人员管理系统,并为各级领导及全体员工分配系统登录账号。有如下几个要求:
    1. 权限等级不同:公司领导登录后可查看所有员工信息,部门领导登录后只可查看本部门员工的信息,员工登录后只可查看自己的信息;
    2. 访问权限不同:如公司领导登录后,可查看员工薪水分布界面,而员工则不能看到;
    3. 操作权限不同:如系统管理员可以在信息发布界面进行增删改查发布信息,而普通员工只可以在信息发布界面进行查看,不能修改、删除和新增。

    功能分析

    1. 登录一个系统,基本都需要用户输入用户名、密码;
    2. 每个用户的角色不同,则其访问权限一般也不同,如:
           系统管理员:可以查看所有界面;
           普通用户:只能查看部分界面。
    3. 不同的用户,即使可以查看同样的界面,但在该界面上可进行的操作权限也不同,如:
           用户1:可以在界面1上进行增删改查;
           用户2:只可以在界面1上查看,不具备增删改功能;
    4. 不同用户基本都对应不同角色,如:用户1、用户2分别对应管理员角色、操作员角色,角色之间也存在权限等级的差异,如:
          角色1:对应省级管理员;==>可以查看该省下的所有学校信息;
          角色2:对应市级管理员;==>可以查看该市下的所有学校信息;
          角色3:对应县级管理员;==>可以查看该县下的所有学校信息;
    不管是省、市、县哪个系统管理员,他们可访问的界面都是相同的(即访问权限相同),且在每个界面上可进行的操作权限也相同的,不同的是每个管理员角色可以访问的学校个数和学校范围不同,这里称这种不同为:权限等级不同;

    总结:
    从上面的分析中,主要涉及到以下几个概念:
    1.角色:
           如系统管理员角色,系统操作员角色,普通用户角色;
           不同的角色,其访问权限是不同的,即可访问的模块(界面)集合是不同的;
           角色的权限等级也不同,权限等级如:公司领导、部分领导、普通员工;
    2. 模块:(界面)
        模块就是指具体的界面,每个模块上又有不同的操作,如增删改查;
    3. 访问权限:确定角色可以访问的模块(界面)集合;
    4. 操作权限:确定可以在各模块(界面)上进行的操作集合,如增删改查;
    5. 权限等级:即确定角色可以访问的范围,如:
             角色1:权限等级为公司领导,则可以查看公司所有员工信息;
             角色2:权限等级为部门领导,则只可以查看该部门所有员工信息。


    数据库设计

    总体模型:




    1.模块定义表:
    模块是分层级的,如:信息管理–>联系方式管理;

    每个模块都有上级模块。

    2. 角色定义表:
    含有角色权限等级,用于为角色分配权限等级;
    角色权限等级:是一个菜单选项,包括公司领导、部门领导、普通员工;

    3.授权定义表:
    用于给角色分配访问权限以及为每个模块分配操作权限;
    1个角色可以含有多个模块,同样1个模块可以分配给多个角色,所以角色和模块是多对多的关系;这种多对多的关系可以使用关系表来实现,即通过联合主键和实现关系表:

    表中含有字段“操作权限”,用于给每个界面分配操作权限,见下图:
    若该模块有增删改查功能,则操作权限15,即二进制的“1111”,若该模块只有查看功能,则操作权限为2,即二进制的“0010”,同样的,“0111”表示该模块有增、改、查功能;

    4. 系统用户表:

    该表中“角色权限等级”—>应与“所属角色”中的权限等级保持一致,之所以该表中重复该字段,是为了方便查询。
    角色权限等级取值:
      1. 公司领导:company_id不能为空;
      2. 部门领导:company_id、dept_id不能为空;
      3. 普通员工:company_id、dept_id、staff_id不能为空;



    登录执行过程

    1. 系统登录时,首先输入用户名、密码;
    2. 确定访问权限
       2.1 判断该用户的“角色编号”;
       2.2 在“授权定义表”中根据该“角色编号”查找相应的模块,找到的模块集合即是访问权限;
    3. 确定操作权限
       3.1 在2.2步骤中查询到的每个模块都有相应的操作权限,即构成了每个模块的操作权限;
    4. 确定权限等级
       4.1 结合该用户的“角色权限等级”+“公司标识”+“部门标识”+“员工标识”,到员工信息表中去查找相应员工,具体如下:
       角色权限等级取值:
       1. 公司领导:查找<员工信息表.公司标识==该用户.公司标识>的所有用户
       2. 部门领导:查找<员工信息表.公司标识==该用户.公司标识 && 
                                      员工信息表.部门标识==该用户.部门标识>的所有用户
       3. 普通员工:查找<员工信息表.公司标识==该用户.公司标识 && 
                                      员工信息表.部门标识==该用户.部门标识 && 
                                      员工信息表.员工标识==该用户.公司标识>的所有用户
       

    展开全文
  • 本课程从0到1实现一个基于SpringBoot+Jpa+JWT+Spring Security+Vue+ElementUI整合前后端分离权限后台管理系统,数据库采用的是:mysql5.7,本项目主要功能模块有:用户管理、角色管理、菜单管理、部门管理、岗位管理...
  • 分级权限分配

    千次阅读 2019-05-30 17:51:27
    _=1559207520060 ...多部门共用系统、各个部门有其自己的管理员,并给其部门员工分配权限,即实现多级管理员层层分配,分级管理员只能管理自己职责范围内的模板权限分配,FineReport自主...

    https://help.finereport.com/doc-view-711.html?&_=1559207520060

     

     

     

    1. 版本

     

     

      报表服务器版本
      10.0

    2. 描述

    多部门共用系统、各个部门有其自己的管理员,并给其部门员工分配权限,即实现多级管理员层层分配,分级管理员只能管理自己职责范围内的模板权限分配,FineReport自主开发的数据决策系统中提供了多级权限分配功能来实现权限的层级分配,下面介绍使用方法。

     

    3. 解决思路

    系统总管理员在权限管理中开启分级授权选项,将授权权限赋给下级管理员的角色,同时配置该角色所能分配权限的角色(对象),此时,下级管理员的角色登录系统时,就能将其有权授权的权限分配给对应的角色。

    4. 示例

    下面给技术支持部长部门职位分配参数查询和填报录入的查看权限和授权权限,并将平台管理面板中定时调度的查看权限和授权权限分配过去,同时其可以进行权限管理的部门为整个技术支持部门。

    4.1 开启分级权限管理

    管理员账号登录决策系统,点击管理系统>权限管理,可以看到管理界面分配报表权限面板中只可以分配报表的查看权限,没有授权权限,点击设置按钮,在分级权限管理标签后面开启分级授权,点击确定,页面回到权限管理主界面,此时,可以看到权限项面板后面多了一个授权的勾选项,如下图:

    注:未开启分级权限管理里面的分级授权选项时,权限项是不会出现授权选项的。

    4.2 权限分配

    为技术支持部长职位进行分配权限,如上描述,在权限配置>部门职位选项中选中技术支持>部长,在右侧的权限项中选择报表,勾选参数查询和填报录入后面的授权复选框,此时查看复选框也会自动勾选上,以及平台管理选项里面的定时调度查看和授权复选框和权限配置的查看复选框,如下图:

    注:开启了分级授权选项,如果需要给某个用户分配授权权限,那么必须给该用户分配平台管理标签项中的权限管理的查看权限。

    注:如果次级管理员需要将报表和平台管理的使用权限分配给其他人,首先该用户必须要有该报表和平台管理的授权权限。 

    注:如果次级管理员需要编辑角色内用户(添加/删除),还需将用户管理的查看权限赋给次级管理员。

    4.3 选择可管理部门/角色

    上面将技术支持部长职位的报表权限和管理平台权限都已经设置好之后,下面设置该用户可以将这些权限分配下去的用户,

    在可管理部门/角色面板中选择技术支持整个部门,如下图:

    5. 效果查看

    5.1 查看权限

    登出系统,用技术支持部长账号Alice账号登录,可以看到该角色拥有参数查询、填报录入、定时调度的查看和授权权限以及权限管理的查看权限,如下图:

    5.2 授权权限

    选择管理系统>权限管理,可看到部门职位列表中只有技术支持部门的三个职位,所以技术支持部长可以为包括自己在内的三个部门职位分配报表展示和平台管理的使用权限,技术支持部长可授权的内容包括参数查询、填报录入、定时调度,下面为技术支持总调度分配填报录入和定时调度的查看权限,如下图:

    注:此时的技术支持部长就相当于次级管理员,其对自己部门的人员分配系统的使用权限,由于管理员在给技术支持部长配置授权权限的时候,并没有勾选权限管理授权复选框,即没有把权限管理的授权权限分配给该角色,所以技术支持部长没有将权限管理分配给其下级的权限。

    另:除了给部门职位分配权限之外,还可以手动添加角色/用户,并给其分配权限。

    5.3 二次权限分配效果查看

    登出系统,用技术支持总调度Jack账号登录,可以看到该用户只有填报录入和定时调度的查看权限,并没有授权权限:

    6. 总结从上面示例可以看出,多级权限分配有以下几个特征:

    1)如果需要将授权权限分配给某个职位或角色,首先需要开启分级授权功能;

    2)如果某角色拥有授权权限,其必须拥有管理系统>权限管理的查看权限,因为进行权限分配的时候需要在权限管理项中进行;

    3)下级管理员能看到用户是管理员在给其分配可管理部门下的用户、角色下面的用户以及无部门角色的用户,同时该部门的部门结构也会显示出来;

    4)如果出现多个管理员为同一角色进行权限分配,那么后配置的增量更新先配置的;

    5)分级管理员增删报表目录的时候,当删除目录时,会删除下面所有的模板,包含无权限的模板。

    展开全文
  • java web简单权限管理设计

    万次阅读 多人点赞 2015-03-19 23:23:05
    推荐最新技术springboot版权限管理(java后台通用权限管理系统(springboot)),采用最新技术架构,功能强大! 注:由于该项目比较老,所以没有采用maven管理,建议下载springboot权限管理系统,对学习和使用会更有...

    源码免费下载地址:关注微信公众号“虾米聊吧”,回复关键字“权限

     

    推荐最新技术springboot版权限管理java后台通用权限管理系统(springboot)),采用最新技术架构,功能强大

    注:由于该项目比较老,所以没有采用maven管理,建议下载springboot权限管理系统,对学习和使用会更有帮助。

    springboot权限管理系统介绍地址:https://blog.csdn.net/zwx19921215/article/details/97806078

    springboot权限管理系统初级版下载地址:http://zyshare.cn/resource/detail/3

    springboot权限管理系统高级版下载地址:http://zyshare.cn/resource/detail/7

    springboot个人博客系统:https://blog.csdn.net/zwx19921215/article/details/102665020

    后台管理系统模板html打包下载: http://zyshare.cn/resource/detail/14

     

    最近在做一个网站类型项目,主要负责后台,ui框架选型为jquery easy ui,项目架构为spring mvc + spring jdbc,简单易用好上手!搭建好框架后开始了第一个任务,设计并实现一套简单的权限管理功能。

    一套最基本的权限管理包括用户、角色、资源。

     

    数据库设计

    我的设计如下:

    用户:user

    角色:role

    用户-角色:user_role

    资源:resource(包括上级菜单、子菜单、按钮等资源)

    角色-资源:role_resource

    标准的权限管理系统设计为以上5张表。

     

    注:用户、用户-角色我就不做说明了,这两个是很简单的两块,用户的crud,以及为用户分配角色(多对多的关系)稍微琢磨一下就清楚了,下面都是针对为角色分配权限的实现

    效果图:

    项目结构

     

    后台实现

    展示层采用ztree树

     

    role.jsp

     

    <%@ page contentType="text/html;charset=UTF-8"%>
    <%@ include file="/views/back/include/taglib.jsp"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta name="decorator" content="back" />
    <script type="text/javaScript">
    //打开菜单窗口
    function openMenuDialog(){
    	var selected = $("#list").datagrid('getSelected');
        if (selected != null) {
        	$("#id").val(selected.id);
        	queryMenus(selected.id);
        	$("#menuWindow").window("open");
        } else {
       	 $.messager.alert('提示', "未选择数据!"); 
        }
    }
    //角色-菜单信息入库
    function ajaxSubmit(rid,idstr){
    	$.post("${ctx}/roleMenu/save.jhtml",{"roleId":rid,"ids":idstr},function(obj){
    		$.messager.alert('提示',obj.msg);
    		$("#menuWindow").window('close');
    	},'json');
    }
    </script>
    <!-- ztree -->
    <script type="text/javascript">
    var tree = "";
    var setting = {
    	check : {
    		chkboxType:{"Y":"ps","N":"s"},//勾选checkbox对于父子节点的关联关系,取消勾选时不关联父
    		chkStyle:"checkbox",
    		enable : true	//是否复选框
    	},
    	//数据
    	data : {
    		simpleData : {
    			enable : true
    		}
    	}
    };
    //查询菜单信息
    function queryMenus(roleId){
    	$.post('${ctx}/role/treedata.jhtml', {'roleId':roleId}, function(zNodes) {
    		for (var i = 0; i < zNodes.length; i++) {
    			if (zNodes[i].isParent) {
    
    			} else {
    				//zNodes[i].icon = "${ctxStatic}/images/532.ico";//设置图标
    			}
    		}
    		tree = $.fn.zTree.init($("#tree"), setting, zNodes);
    		tree.expandAll(true);//全部展开
    		//var nodes = treeObj.getNodes();
    	}, 'json');
    }
    
    //获取选中节点
    function onCheck(){
    	 var rid = $("#id").val();
    	 var treeObj=$.fn.zTree.getZTreeObj("tree");
         var nodes=treeObj.getCheckedNodes(true);
         var ids = new Array();
         for(var i=0;i<nodes.length;i++){
        	//获取选中节点的值
        	 ids.push(nodes[i].id);
    	    // v+=nodes[i].id + ",";
    	    //alert(nodes[i].id); 
         }
    	ajaxSubmit(rid,ids);     
    }
    </script>
    </head>
    <body>
    	<!-- 数据表格 -->
    	<table id="list" url='${ctx}/role/list/page.jhtml' method='post'
    		class="easyui-datagrid" style="width:100%;" fitcolumns="true" 
    		toolbar='#tb' pagination='true' rownumbers='true' singleSelect='true'>
    		<thead>
    			<tr>
    				<th field='name' sortable='true' width='100'>角色名称</th>
    				<th field='description' width='200' align='right'>描述</th>
    				<th field='createTimeFormat' width='150' align='center'>创建时间</th>				
    			</tr>
    		</thead>
    	</table>
    	
    	<!-- 编辑栏  -->
    	<div id="tb" style="padding:5px 5px;">
    		<div>
    			<p2p:permission module="role" code="add"><a href="#" class="easyui-linkbutton" iconCls="icon-add" onclick="openCreateDialog();">新增</a></p2p:permission>
    			<p2p:permission module="role" code="edit"><a href="#" class="easyui-linkbutton" iconCls="icon-edit" onclick="openUpdateDialog();">编辑</a></p2p:permission>
    			<p2p:permission module="role" code="delete"><a href="#" class="easyui-linkbutton" iconCls="icon-remove" onclick="del();">删除</a></p2p:permission>
    			<p2p:permission module="role" code="authority"><a href="#" class="easyui-linkbutton" iconCls="icon-edit" onclick="openMenuDialog();">设置权限</a></p2p:permission>
    		</div>
    		<!-- 搜索项 -->
    		<div style="margin-top:5px;padding-left:5px">
    			用户名:   <input id="query_name" class="easyui-textbox" type="text" style="width:110px" />
    			创建日期: <input id="query_startDate" class="easyui-datebox" style="width:110px">
    			至: 	   <input id="query_endDate" class="easyui-datebox" style="width:110px">
    			<a onclick="reload();" href="#" class="easyui-linkbutton" iconCls="icon-search">查询</a>
    		</div>
    	</div>
    	
    	
    	
    	<!-- 权限窗口 -->
    	<div id="menuWindow" class="easyui-window" title="配置权限" data-options="modal:true,iconCls:'icon-save',footer:'#menuWindowfooter'" style="width:350px;height:420px;padding:10px">
    		<div id="tree" class="ztree" style="padding: 10px 20px;"></div>
    	</div>
    	<div id="menuWindowfooter" style="padding:5px;text-align:right;"> 
    		<a href="#" onclick="onCheck();" class="easyui-linkbutton" data-options="iconCls:'icon-save'">提交</a>
    	</div>
    	
    </body>
    </html>
    

     

     

    action层
    RoleAction.java

     

     

     

    @RequestMapping(value = "/treedata.jhtml")
    	@ResponseBody
    	public String treedata(HttpServletRequest request, Model model) {
    		DynamicParams params = new DynamicParams(request);
    		List<Map<String, Object>> mapList = Lists.newArrayList();
    
    		params.put("allMenu", "allMenu");
    		List<Menu> list = authManager.findMenuList(params);
    
    		List<RoleMenu> roleMenus = authManager.findRoleMenuList(params);
    
    		for (int i = 0; i < list.size(); i++) {
    			Menu e = list.get(i);
    			Map<String, Object> map = Maps.newHashMap();
    			map.put("id", e.getId());
    			map.put("pId", e.getParentId() != null ? e.getParentId() : 0);
    			map.put("name", e.getName());
    			for (RoleMenu roleMenu : roleMenus) {
    				if (roleMenu.getMenuId() == e.getId()) {
    					map.put("checked", true);
    				}
    			}
    			mapList.add(map);
    		}
    
    		return toJson(mapList);
    	}

     

     

     

     

     

    service层

    AuthManager.java

     

    // 菜单管理
    
    	public List<Menu> findMenuList(DynamicParams params) {
    		List<Menu> menus = new ArrayList<Menu>();
    
    		if ("allMenu".equals(params.getString("allMenu"))) {
    			menus = menuDao.findList(params);
    		} else {
    			// 通过用户查询角色
    			List<UserRole> userRoles = userRoleDao.findList(params);
    			// 通过角色查询菜单
    			List<RoleMenu> roleMenus = new ArrayList<RoleMenu>();
    			if (userRoles != null && userRoles.size() > 0) {
    				for (UserRole userRole : userRoles) {
    					params = new DynamicParams();
    					if (userRole != null) {
    						if (userRole.getRoleId().equals(params.getString("rid"))) {
    							break;
    						}
    						params.put("roleId", userRole.getRoleId().toString());
    						List<RoleMenu> rms = roleMenuDao.findList(params);
    						for (RoleMenu roleMenu : rms) {
    							roleMenus.add(roleMenu);
    						}
    					}
    				}
    			}
    
    			// 查询菜单信息
    			for (RoleMenu roleMenu : roleMenus) {
    				if (roleMenu != null) {
    					Menu menu = menuDao.find(roleMenu.getMenuId());
    					if (menu != null) {
    						menus.add(menu);
    					}
    				}
    			}
    			menus = removeDuplicate(menus);
    			Collections.sort(menus);
    		}
    		return menus;
    	}
    /**
    	 * 去除菜单中重复项
    	 * 
    	 * @param list
    	 * @return
    	 */
    	private List<Menu> removeDuplicate(List<Menu> list) {
    		List<Menu> result = new ArrayList<Menu>();
    		Set<Long> menuIds = new HashSet<Long>();
    		for (int i = 0; i < list.size(); i++) {
    			Menu m = list.get(i);
    			if (m != null && menuIds.add(m.getId())) {
    				result.add(m);
    			}
    		}
    		return result;
    	}

     

    public List<RoleMenu> findRoleMenuList(DynamicParams params) {
    		List<RoleMenu> roleMenus = roleMenuDao.findList(params);
    		return roleMenus;
    	}

     

     

    Dao层

    menuDao

    @Override
    	protected void createQuery(DynamicParams params, StringBuffer sql, List<Object> args) {
    		sql.append("select s.* from sys_menu s where 1=1 ");
    
    		String parentId = params.getString("parentId");
    		if (StringUtils.isNotBlank(parentId)) {
    			sql.append(" and parent_id = ? ");
    			args.add(parentId);
    		}
    
    		String sort = params.getString("sort");
    		String order = params.getString("order");
    
    		if (StringUtils.isNotBlank(sort)) {
    			sql.append(" order by ").append(hump2underline(sort));
    			if (StringUtils.isNotBlank(order)) {
    				sql.append(" " + order);
    			} else {
    				sql.append(" desc ");
    			}
    		} else {
    			sql.append("order by sort asc,id desc ");
    		}
    	}


    userRoleDao

     

    @Override
    	protected void createQuery(DynamicParams params, StringBuffer sql, List<Object> args) {
    		sql.append("select s.* from sys_user_role s where 1=1 ");
    		Long adminId = params.getLong("adminId");
    		if (adminId != null) {
    			sql.append(" and s.user_id = ?");
    			args.add(adminId);
    		}
    	}


    roleMenuDao

     

     

    @Override
    	protected void createQuery(DynamicParams params, StringBuffer sql, List<Object> args) {
    		sql.append("select s.* from ").append("sys_role_menu").append(" s where 1=1 ");
    		Long adminId = params.getLong("roleId");
    		if (adminId != null) {
    			sql.append(" and s.role_id = ?");
    			args.add(adminId);
    		}
    	}

     

     

     

    在WEB-INF目录下建立文件夹tlds 建立自定义标签文件shiros.tld,我们通过自定义标签实现页面按钮的控制。

     

     

    <span style="color:#333333;"><?xml version="1.0" encoding="UTF-8" ?>
    <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    	version="2.0">
    	<description>p2p permission taglib</description>
    	<display-name>permission taglib</display-name>
    	<tlib-version>1.0</tlib-version>
    	<short-name>p2p_back</short-name>
    	<uri>http://vanfon.p2p.cn/</uri>
    
    	<tag>
    		<description>权限校验标签,有权限就显示标签体的内容,否则不显示</description>
    		<name>permission</name>
    		<tag-class>com.vanfon.p2p.back.tag.PermissionTag</tag-class>
    		<body-content>JSP</body-content>
    		<attribute>
    			<description></description>
    			<name>module</name>
    			<required>true</required>
    			<rtexprvalue>false</rtexprvalue>
    		</attribute>
    		<attribute>
    			<description></description>
    			<name>code</name>
    			<required>true</required>
    			<rtexprvalue>false</rtexprvalue>
    		</attribute>
    	</tag>
    </taglib></span>

     

     

    自定义标签类

     

    package com.vanfon.p2p.back.tag;
    
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.tagext.TagSupport;
    
    import com.vanfon.p2p.entity.system.Admin;
    import com.vanfon.p2p.entity.system.Menu;
    import com.vanfon.p2p.manager.system.AuthManager;
    import com.vanfon.p2p.utils.DynamicParams;
    import com.vanfon.p2p.utils.SpringContextHolder;
    
    /**
     * 权限控制标签
     * 
     * @author zhangwx
     * @date 2015-2-5
     */
    public class PermissionTag extends TagSupport {
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 4592227792811389132L;
    
    	private String module;// 属性名必须与JSP自定义标签的属性名一样
    
    	private String code;
    
    	public String getModule() {
    		return module;
    	}
    
    	public void setModule(String module) {
    		this.module = module;
    	}
    
    	public String getCode() {
    		return code;
    	}
    
    	public void setCode(String code) {
    		this.code = code;
    	}
    
    	@Override
    	public int doStartTag() throws JspException {
    		boolean result = false;
    		HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();// 通过成员变量获取HttpServletRequest对象
    		Admin admin = (Admin) request.getSession().getAttribute("admin");// 获取登录到系统的用户
    		if (admin != null) {
    			if ("1".equals(String.valueOf(admin.getIfsuper()))) {// 超级管理员
    				result = true;
    			} else {
    				DynamicParams params = new DynamicParams();
    				params.put("id", String.valueOf(admin.getId()));
    				params.put("module", this.module);
    				params.put("code", this.code);
    				AuthManager authManager = SpringContextHolder.getBean(AuthManager.class);
    				List<Menu> userRoleAuths = authManager.findUserRoleAuthList(params);
    				if (userRoleAuths != null && userRoleAuths.size() > 0) {
    					result = true;
    				}
    			}
    		}
    		return result ? EVAL_BODY_INCLUDE : SKIP_BODY;
    	}
    }

     

     

     

     

     

     

     

     

    以上就是该权限管理中权限树(为角色分配权限)的大体实现。

    项目源码下载地址:http://www.zyshare.cn/resource/detail/1

    注:由于本项目年代久远,所以技术比较老旧,新人学习建议此项目 java后台通用权限管理系统(springboot)

    推荐项目:java后台通用权限管理系统(springboot)

    博主qq:193459197  , qq群技术交流与支持:557911445

     

    关注微信公众号“虾米聊吧”,回复“权限”获取源码,后续持续放送技术架构和资料干货!!!  

     

    一个热衷于分享技术和生活的程序猿,让我们一起交流吧~      
                        
                      微信扫描二维码,关注我的公众号


     
     

    展开全文
  • 权限

    2019-10-04 13:11:52
    Linux中权限分类 基本-- 附加-- ACL-- 基本权限的分类 r 读 (ls目录,cat/less/head/tail文件) w 写(对目录内容:修改/创建/删除,mv/cp/mkdir/touch/rm;对文件"内容":vim并保存)x 执行(cd目录,运行文件) ...
  • linux系统用户与权限

    千次阅读 2019-03-22 19:16:56
    Linux 是一个多用户系统。 Root 是超级用户 根据账号位置: 本地账号 远程账号 LDAP NIS 根据账号的功能: 超级用户: root uid 0 普通用户: 系统用户: uid 1-499 本地用户: uid 500 ......
  • 权限系统设计 前言 权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。 目前在...
  • 权限管理系统

    2019-02-01 21:50:00
    创建表结构,基于角色权限控制、菜单:c.基于Django admin录入权限数据d.用户登录程序session权限相关session菜单相关三、总结rbac里有什么?settings中有什么?使用方法回到顶部(go to top)一、需求分析: 用户登录...
  • linux权限详细介绍

    万次阅读 2018-12-26 10:09:17
    这些信息中包含了这个文件的权限信息和所有者以及所在组,还有该文件的大小,该文件最后修改的日期时间,文件名称等信息. 从左往右看, 第一个代表文件的类型, 如果是一个普通文件为"-", 如果是一个目录...
  • 通用权限管理设计篇

    万次阅读 2017-10-09 11:30:25
     因为做过的一些系统的权限管理的功能虽然在逐步完善,但总有些不尽人意的地方,总想抽个时间来更好的思考一下权限系统的设计。  权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新对系统...
  • 文件权限中 chmod、u+x、u、r、w、x分别代表什么

    万次阅读 多人点赞 2018-04-12 13:36:34
    Linux系统中的每个文件和目录都有访问许可权限,如下面所示: 要说清楚问题,我们截取一些内容: ypy@ubuntu:~$ ls -l drwxr-xr-- 2 ypy ypy 4096 Nov 30 18:33 Desktop/ drwxr-xr-- 2 ypy ypy 4096 Nov 30 18...
  • 3. 掌握基于url的权限管理(不使用Shiro权限框架的情况下实现权限管理) 4. shiro实现用户认证 5. shiro实现用户授权 6. shiro与企业web项目整合开发的方法 权限管理原理知识 什么是权限管理 只要有用户参与的系统一般...
  • 权限漏洞:水平权限漏洞、垂直权限漏洞

    万次阅读 多人点赞 2019-07-31 19:21:31
    水平权限漏洞是指Web应用程序接收到用户请求时,没有判断数据的所属人,或者在判断数据所属人时是从用户提交的参数中获取了userid,导致攻击者可以自行修改userid修改不属于自己的数据。 漏洞示例: XXX/...
  • DRF 权限管理 AllowAny : 默认的权限,允许任何用户进行操作 IsAuthenticated :只允许 授权的 用户 进行操作 IsAdminUser : 只允许 后台管理员进行操作 ...DRF 授权管理 DRF 默认采用的是 session 登...
  • 权限管理模型

    万次阅读 2013-12-19 13:48:54
    1. 概念 访问控制技术是由美国国防部(Department of Defense, DoD)资助的研究和开发成果演变而来的。这一研究导致两种基本类型访问控制的产生...最初的研究和应用主要是为了防止机密信息被未经授权者访问,近期的应
  • 权限验证 页面级别权限 路由: 默认挂载不需要权限的路由,例如:登录、主页。需要权限的页面通过 router.addRoutes(点击查看官方文档) 动态添加更多的路由规则,404拦截页面需要放在路由表的最后,否则 /404 后面的...
  • springboot+security实现权限管理

    万次阅读 多人点赞 2019-03-21 14:06:45
    Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,...
  • 对于Saas业内在用户统一身份认证及授权管理领域,主要关注 4 个方面(4A管理)): 集中账号管理(Account)、集中认证管理(Authentication)、集中授权管理(Authorization)和集中审计管理(Audit), 简称 4A ...
  • ASP.NET通用权限管理系统源代码(含文档、数据库)

    千次下载 热门讨论 2013-08-27 11:30:49
    ASP.NET通用权限管理系统源代码(含文档、数据库) 1.菜单导航管理 2.操作按钮 3.角色管理 4.部门管理 5.用户管理(用户权限) 6.用户组管理(设置成员,用户组权限) 7.系统配置(动态配置系统参数) 8.附加属性...
  • 通用权限管理

    千次阅读 2013-08-05 15:44:14
     因为做过的一些系统的权限管理的功能虽然在逐步完善,但总有些不尽人意的地方,总想抽个时间来更好的思考一下权限系统的设计。  权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新对系统...
  • 权限管理系统源码合集【含数据库】

    千次下载 热门讨论 2012-11-20 08:02:35
    struts2权限管理系统 通用权限管理系统设计篇.doc 固定资产管理系统项目 Jaoso新闻文章发布系统final+Struts+Spring+Hibernate java web 系统权限设计 源码 struts+hibernate权限管理系统_oracle数据库
  • 权限管理模型之一

    千次阅读 2016-08-27 22:57:48
    1. 概念 访问控制技术是由美国国防部(Department of Defense, DoD)资助的研究和开发成果演变而来的。这一研究导致两种基本类型访问控制的产生:...最初的研究和应用主要是为了防止机密信息被未经授权者访问,近期
  • 基于Spring Security实现权限管理系统

    万次阅读 多人点赞 2018-11-06 16:49:49
    基于Spring Security实现权限管理系统 稍微复杂一点的后台系统都会涉及到用户权限管理。何谓用户权限?我的理解就是,权限就是对数据(系统的实体类)和数据可进行的操作(增删查改)的集中管理。要构建一个可用的...
  • MySQL数据库权限管理

    千次阅读 2018-07-25 17:40:20
    学习mysql数据库,对于它的权限管理是关键的一环。所以,下面介绍的是MySQL权限管理。 (本文总结了各种情况的权限管理示例,如有需要随时更新) MySQL权限表 MySQL数据库实际上是...
  • 系统权限管理设计

    万次阅读 多人点赞 2014-07-11 16:39:19
    关于权限菜单的设计
  • Mysql权限管理

    千次阅读 2019-03-11 18:03:55
    回顾: 1.Mysql认证方式: root@localhost(登录主机的地址-客户端) 密码 客户端: 要通过什么用户什么密码登录服务器 用户名 密码 登录的服务器的IP地址 服务器提供的mysql服务的端口 ...select host...
  • 浅谈统一权限管理平台

    万次阅读 2018-06-20 19:16:19
    本文通过建设的统一权限管理平台,从而能够更加灵活、迅速的实现身份权限管理需求,提升公司身份权限管控水平,降低身份安全控制风险。 中国论文网 /1/view-7200261.htm  关键词:系统架构;统一权限管理平台 ...
  • 角色权限管理系统中最重要的一个模块,其中也讲到一些开发中的常用技巧,相信一定大有用处。
  • 项目特点 Shiro的认证和授权 系统安全一直是在系统开发中不可规避的问题,而权限控制又跟系统安全...renren-security是"人人社区"社区开源的轻量级权限管理系统。系统采用SprinBoot、Mybatis、Shiro...

空空如也

1 2 3 4 5 ... 20
收藏数 2,420,778
精华内容 968,311
关键字:

权限