权限的分配与使用

权限:控制功能的使用

web中权限的应用:

1、一个功能对应一个或多个URL

2、对功能的控制就是对URL地址访问的控制

权限方案:

1、用户的权限就是用户的所有角色的权限的合集

2、一个功能是否能被某用户使用,是判断用户权限中是否有这个功能的使用许可。

步骤:

1、初始化权限

权限是不可变的,在第一次使用时就已经确定了。所以我们可以 insert into。。。。

Session session=sessionFactory.getCurrentSession();//保存超级管理员用户User user=new User();user.setLoginName("admin");user.setPassword(DigestUtils.md5Hex("admin"));user.setName("超级管理员");session.save(user);//保存权限数据Privilege menu,menu1,menu2,menu3;menu=new Privilege("系统管理",null,null);menu1=new Privilege("部门管理","/department_list",menu);menu2=new Privilege("岗位管理","/role_list",menu);menu3=new Privilege("用户管理","/user_list",menu);session.save(menu);session.save(menu1);session.save(menu2);session.save(menu3);session.save(new Privilege("部门列表","/department_list",menu1));session.save(new Privilege("部门删除","/department_delete",menu1));session.save(new Privilege("部门添加","/department_add",menu1));session.save(new Privilege("部门修改","/department_edit",menu1));session.save(new Privilege("岗位列表","/role_list",menu2));session.save(new Privilege("岗位删除","/role_delete",menu2));session.save(new Privilege("岗位添加","/role_add",menu2));session.save(new Privilege("岗位修改","/role_edit",menu2));session.save(new Privilege("用户列表","user_list",menu3));session.save(new Privilege("用户删除","user_delete",menu3));session.save(new Privilege("用户添加","user_add",menu3));session.save(new Privilege("用户修改","user_edit",menu3));menu=new Privilege("网上交流",null,null);menu1=new Privilege("论坛管理","/forumManage_list",menu);menu2=new Privilege("论坛","/forum_list",menu);session.save(menu);session.save(menu1);session.save(menu2);

2、分配权限

给角色分配权限,用户的权限就是用户的所有角色的权限的合集

分配权限类似于修改

public String setPrivilegeUI(){//准备回显数据Role role=roleService.find(model.getId());ActionContext.getContext().getValueStack().push(role);if(role.getPrivileges()!=null){privilegeIds=new Long[role.getPrivileges().size()];int index=0;for(Privilege privilege : role.getPrivileges()){privilegeIds[index++]=privilege.getId();}}//List<Privilege> list=privilegeService.getAll();//ActionContext.getContext().put("list", list);return "setPrivilegeUI";}/** * 分配权限 * @return */public String setPrivilege(){//1、从数据库中获取修改对象Role role=roleService.find(model.getId());//2、设置修改数据List<Privilege> list=privilegeService.getByIds(privilegeIds);role.setPrivileges(new HashSet<Privilege>(list));//3、更新到数据库roleService.save(role);return "toList";}jsp页面—–显示树状结构

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@include file="/WEB-INF/jsp/public/commons.jspf"%><html><head><title>配置权限</title><script language="javascript"src="${pageContext.request.contextPath }/script/jquery_treeview/jquery.treeview.js"></script><link type="text/css" rel="stylesheet"href="${pageContext.request.contextPath }/style/blue/file.css" /><link type="text/css" rel="stylesheet"href="${pageContext.request.contextPath }/script/jquery_treeview/jquery.treeview.css" /><script type="text/javascript">$(function(){$("[name=privilegeIds]").click(function(){//当选中或取消权限时,也同时选中或取消下级元素$(this).siblings("ul").find("input").attr("checked",this.checked);//当选中一个权限时,也同时选中直接上级if(this.checked==true){$(this).parents("li").children("input").attr("checked",true);}});});$(function() {$("#tree").treeview();});</script></head><body><!– 标题显示 –><div id="Title_bar"><div id="Title_bar_Head"><div id="Title_Head"></div><div id="Title"><!–页面标题–><img border="0" width="13" height="13"src="${pageContext.request.contextPath }/style/images/title_arrow.gif" />配置权限</div><div id="Title_End"></div></div></div><!–显示表单内容–><div id=MainArea><s:form action="role_setPrivilege"><s:hidden name="id"></s:hidden><div class="ItemBlock_Title1"><!– 信息说明 –><div class="ItemBlock_Title1"><img border="0" width="4" height="7"src="${pageContext.request.contextPath }/style/blue/images/item_point.gif" />正在为【${name } }】配置权限</div></div><!– 表单内容显示 –><div class="ItemBlockBorder"><div class="ItemBlock"><table cellpadding="0" cellspacing="0" class="mainForm"><!–表头–><thead><tr align="LEFT" valign="MIDDLE" id="TableTitle"><td width="300px" style="padding-left: 7px;"><!– 如果把全选元素的id指定为selectAll,并且有函数selectAll(),就会有错。因为有一种用法:可以直接用id引用元素 –><input type="CHECKBOX" id="cbSelectAll"onClick="$('[name=privilegeIds]').attr('checked',this.checked)" /><label for="cbSelectAll">全选</label></td></tr></thead><!–显示数据列表–><tbody id="TableData"><tr class="TableDetail1"><!– 显示权限树 –><td><!–<s:checkboxlist name="privilegeIds" list="#list"listKey="id" listValue="name"></s:checkboxlist>–><%–<s:iterator value="#list"><input type="checkbox" name="privilegeIds" value="${id }" id="lb_${id }"<s:property value="%{id in privilegeIds ? 'checked' : '' }"/>/><label for="lb_${id }">${name }</label><br/></s:iterator>–%><ul id="tree"><s:iterator value="#application.topPrivilegeList"><li><input type="checkbox" name="privilegeIds" value="${id }" id="lb_${id }" <s:property value="%{id in privilegeIds ? 'checked' : '' }"/>/><label for="lb_${id }"><span class="folder">${name }</span></label><ul><s:iterator value="children"><li><input type="checkbox" name="privilegeIds" value="${id }" id="lb_${id }" <s:property value="%{id in privilegeIds ? 'checked' : '' }"/>/><label for="lb_${id }"><span class="folder">${name }</span></label><ul><s:iterator value="children"><li><input type="checkbox" name="privilegeIds" value="${id }" id="lb_${id }" <s:property value="%{id in privilegeIds ? 'checked' : '' }"/>/><label for="lb_${id }"><span class="folder">${name }</span></label></li></s:iterator></ul></li></s:iterator></ul></li></s:iterator></ul></td></tr></tbody></table></div></div><!– 表单操作 –><div id="InputDetailBar"><input type="image"src="${pageContext.request.contextPath }/style/images/save.png" /><a href="javascript:history.go(-1);"><imgsrc="${pageContext.request.contextPath }/style/images/goBack.png" /></a></div></s:form></div><div class="Description">说明:<br /> 1,选中一个权限时:<br />      a,应该选中 他的所有直系上级。<br />     b,应该选中他的所有直系下级。<br /> 2,取消选择一个权限时:<br />     a,应该取消选择 他的所有直系下级。<br />     b,如果同级的权限都是未选择状态,就应该取消选中他的直接上级,并递归向上做这个操作。<br />3,全选/取消全选。<br /> 4,,默认选中当前岗位已有的权限。<br /></div></body></html>3、根据权限显示菜单

生活若剥去了理想梦想幻想,那生命便只是一堆空架子

权限的分配与使用

相关文章:

你感兴趣的文章:

标签云: