JAVA:权限管理授权页面与列表页面

一、权限配置

1. 思路

  1. 初始化所有权限,显示页面
  2. 共三级,若上级id为0并且下级权限数组长度为0,添加增删改查菜单
  3. 若存在上级并且下级权限数组长度为0,添加增删改查菜单

2. 代码

权限配置页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>权限分配</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="${pageContext.request.contextPath}/assets/css/jquery-ui-1.10.3.full.min.css" />
    <link rel="stylesheet" href="${pageContext.request.contextPath}/core/css/tree.css"/>
    <script src="${pageContext.request.contextPath}/core/js/jquery.min.js"></script>
    <script src="${pageContext.request.contextPath}/assets/js/bootstrap.min.js"></script>
    <script src="${pageContext.request.contextPath}/assets/js/ace.min.js"></script>
    <script src="${pageContext.request.contextPath}/core/js/shCore.js" type="text/javascript"></script>
    <script src="${pageContext.request.contextPath}/core/js/shBrushJScript.js" type="text/javascript"></script>
    <script src="${pageContext.request.contextPath}/core/js/shBrushCss.js" type="text/javascript"></script>
    <script src="${pageContext.request.contextPath}/core/js/jquery.tree.js" type="text/javascript"></script>

</head>

<body>
<!--header-->
<%@include file="../../include/header.jsp" %>


<div class="main-container" id="main-container">
    <script type="text/javascript">
        try{ace.settings.check('main-container' , 'fixed')}catch(e){}
    </script>

    <div class="main-container-inner">
        <a class="menu-toggler" id="menu-toggler" href="#">
            <span class="menu-text"></span>
        </a>

        <!--left menu-->
        <%@include file="../../include/menu.jsp" %>


        <!--content-->
        <div class="main-content">
            <div class="breadcrumbs" id="breadcrumbs">
                <script type="text/javascript">
                    try{ace.settings.check('breadcrumbs' , 'fixed')}catch(e){}
                </script>

                <ul class="breadcrumb">
                    <li>
                        <i class="icon-home home-icon"></i>
                        <a href="/manage/main/home">首页</a>
                    </li>
                    <li class="active">控制台</li>
                </ul><!-- .breadcrumb -->
            </div>

            <div class="page-content">
                <div class="page-header">
                    <h1>
                        权限管理
                        <small>
                            <i class="icon-double-angle-right"></i>
                            权限分配
                        </small>
                    </h1>
                </div><!-- /.page-header -->

                <button class="btn btn-success icon-ok" id="save">   保 存 </button>
                <div class="space-4"></div>

                <div class="row">
                    <div class="col-xs-12">
                        <!-- PAGE CONTENT BEGINS -->

                        <div class="row">
                            <div class="col-sm-6">
                                <div class="widget-box">
                                    <div class="widget-header header-color-blue2">
                                        <h4 class="lighter smaller">角色列表</h4>
                                    </div>

                                    <div class="widget-body">
                                        <div class="widget-main padding-8">
                                            <div>
                                                <select class="form-control" id="roleId" name="roleId" multiple="multiple">
                                                    <c:forEach items="${roleVoList}" var="role" varStatus="roleStatus">
                                                        <option value="${role.id}">${role.roleName}</option>
                                                    </c:forEach>
                                                </select>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>

                            <div class="col-sm-6">
                                <div class="widget-box">
                                    <div class="widget-header header-color-blue2">
                                        <h4 class="lighter smaller">菜单列表</h4>
                                    </div>

                                    <div class="widget-body">
                                        <div class="widget-main padding-8">
                                            <div id="tree">

                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>

                        <script type="text/javascript">
                            var $assets = "assets";//this will be used in fuelux.tree-sampledata.js
                        </script>

                        <!-- PAGE CONTENT ENDS -->
                    </div><!-- /.col -->
                </div><!-- /.row -->
            </div><!-- /.page-content -->
        </div><!-- /.main-content -->
    </div><!-- /.main-container-inner -->

    <a href="#" id="btn-scroll-up" class="btn-scroll-up btn btn-sm btn-inverse">
        <i class="icon-double-angle-up icon-only bigger-110"></i>
    </a>
</div><!-- /.main-container -->

<!-- basic scripts -->

<!--[if !IE]> -->

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal"
                        aria-hidden="true">×
                </button>
                <h4 class="modal-title" id="myModalLabel">
                    信息提示 :
                </h4>
            </div>
            <div class="modal-body">
                <h3 id="info"></h3>
            </div>
        </div><!-- /.modal-content -->
    </div><!-- /.modal-dialog -->
</div><!-- /.modal -->


<script type="text/javascript">
    jQuery(function($) {
        //默认显示管理员角色
        $("#roleId").val(1);
        initTree(1);

        //根据不同的角色编号显示对应菜单列表
        $('#roleId').change(function(){
            var roleid = $(this).children('option:selected').val();
            initTree(roleid);
        });

    });
	var show=false;
    /**
     * 初始化菜单树
     * @param status
     */
    function initTree(roleId) {
        var tree = { showcheck: true};

        $.ajax({
            type: "POST",
            url:"/manage/auth/getAllMenuList",
            dataType:"json",
            data:{
                roleId:roleId
            },
            success: function(data) {
                var len = data.obj.length;
                if(data.res == 1){
                    var arr = [];
                    for(var i= 0;i< len; i++){
                        var data1 = data.obj[i];
                        var subarr = [];
                        for(var j=0;j< len;j++){
                            var data2 = data.obj[j];
                            var threearr = [];
                            for(var k=0;k<len;k++){
                                var data3 = data.obj[k];
                                if(data3.parentid == data2.id) {
                                	var opStr=[];
                                	opStr=opAuthStr(data3);
                                    threearr.push({
                                        "id" : "" + data3.id,
                                        "text" : "" + data3.name+" | "+data3.id,
                                        "value" : "" + data3.id,
                                        "showcheck" : true,
                                        complete : true,
                                        "isexpand" : true,
                                        "checkstate" : data3.checkstate,
                                        "hasChildren": opStr
                                    });
                                }
                            }
                            if(data2.parentid == data1.id) {
	                            if(threearr.length==0){
	                               threearr=opAuthStr(data2);
	                            }                            
                                subarr.push({
                                    "id" : "" + data2.id,
                                    "text" : "" + data2.name+" | "+data2.id,
                                    "value" : "" + data2.id,
                                    "showcheck" : true,
                                    complete : true,
                                    "isexpand" : true,
                                    "checkstate" : data2.checkstate,
                                    "hasChildren" : true,
                                    "ChildNodes": threearr
                                });
                            }
                        }
                        if(data1.parentid == 0){
                            if(threearr.length==0){
                               subarr=opAuthStr(data1);
                            }
                            arr.push( {
                                "id" : "" + data1.id,
                                "text" : "" + data1.name+" | "+data1.id,
                                "value" : "" + data1.id,
                                "showcheck" : true,
                                complete : true,
                                "isexpand" : true,
                                "checkstate" : data1.checkstate,
                                "hasChildren" : true,
                                "ChildNodes" : subarr
                            });
                        }
                    }

                    tree.data = arr ;

                    $("#tree").treeview(tree);

                }
            }
        });
        

        $("#save").click(function(e){
            var sid = $("#tree").getCheckedNodes();
            var roleId = $("#roleId").val();
			if(show) return;
			show=true;
            $.ajax({
                type: "POST",
                url: "/manage/auth/saveAuth",
                dataType: "json",
                data: {
                    roleId: roleId +"",
                    menuIds: sid.join(",")
                },
                success: function(data) {
                	show=false;
                    if(data.res == 1){
                        $("#info").text("保存成功!");
                        $("#info").attr("class","text-success");
                        $('#myModal').modal('show');
                    }else{
                        $("#info").text("保存失败!");
                        $("#info").attr("class","text-danger");
                        $('#myModal').modal('show');
                    }
                }
            });
        });
    }
 function   opAuthStr(menuObj) {
	var opStr=[];
	opStr.push({
		"id" :  menuObj.id+"_"+1,
		"text" : "添加",
		"value" : menuObj.id+"_"+1,
		"showcheck" : true,
		complete : true,
		"isexpand" : true,
		"checkstate" : menuObj.isadd,
		"hasChildren": false
		});
	opStr.push({
		"id" :  menuObj.id+"_"+2,
		"text" : "修改",
		"value" : menuObj.id+"_"+2,
		"showcheck" : true,
		complete : true,
		"isexpand" : true,
		"checkstate" : menuObj.isupdate,
		"hasChildren": false
		});
	opStr.push({
		"id" :  menuObj.id+"_"+3,
		"text" : "删除",
		"value" : menuObj.id+"_"+3,
		"showcheck" : true,
		complete : true,
		"isexpand" : true,
		"checkstate" : menuObj.isdelete,
		"hasChildren": false
		});
	opStr.push({
		"id" :  menuObj.id+"_"+4,
		"text" : "查询",
		"value" : menuObj.id+"_"+4,
		"showcheck" : true,
		complete : true,
		"isexpand" : true,
		"checkstate" : menuObj.isquery,
		"hasChildren": false
		});					
	return opStr;
 }


</script>

</body>
</html>

二、权限配置好之后,页面加载

1. 思路

  1. 前台获取列表页面时,controller中获取权限列表,将数据写入model中前台获取列表页面时,controller中获取权限列表,将数据写入model中
  2. 前台jsp页面加载时判断是否有权限,若有权限显示,无权限,不显示

2. 代码

controller

    /**
     * 卡清单列表
     * @param 
     * @param model
     * @return
     */
    @RequestMapping("cardList")
    public String cardList(ToyCardVo toyCardVo, Model model){

        SysDictionaryVo sysDictionaryVo = new SysDictionaryVo();
        sysDictionaryVo.setName("提货卡类型");
        List<SysDictionaryVo> typeList = sysDictionaryService.findByNameGetList(sysDictionaryVo);
        model.addAttribute("typeList",typeList);
        //菜单权限        
        model.addAttribute("auth", getAuthority(45L));//
        return "/toy/card/cardList";
    }
	/**
	 * 获得当前用户菜单权限
	 * @param menuid 菜单id      
	 * @return long
	 */
	public SysAuthorityVo getAuthority(Long menuid){
		Long roleId=(Long)(getRequest().getSession().getAttribute("roleId"));
		SysAuthorityVo sysAuthorityVo = new SysAuthorityVo();
		sysAuthorityVo.setRoleId(roleId);
		sysAuthorityVo.setMenuId(menuid);
		sysAuthorityVo=sysAuthorityService.findById(sysAuthorityVo);
		return sysAuthorityVo;
	}




实体类

public class SysAuthority implements java.io.Serializable {

	// Fields

	private Long id;
	private Long roleId;
	private Long menuId;
    private Short isadd;
    private Short isupdate; 
    private Short isdelete; 
    private Short isquery;

Vo类

@Alias("SysAuthority")
public class SysAuthorityVo extends SysAuthority {

    private String menuIds;

列表展现jsp方式一

 	var isdelete=${auth.isdelete};

                    	if(isupdate==1){
	                    	if(data.isact==1 || data.isact==2){
	                    	 	html+= "<a class='green' href='/manage/card/toCardAdd?id="+data.id+"'>"+
	                                    "编辑"+
	                                    "</a>"
	                    	}    
                		}

列表展现jsp方式二

        		<c:if test="${auth.isadd == 1}">
                <button class="btn btn-success icon-plus" id="add">   新增 </button>
                </c:if>

猜你喜欢

转载自blog.csdn.net/u011374582/article/details/83503492
今日推荐