Web应用——驾培管理系统之系统—权限分配(作者:小圣)

Web应用——驾培管理系统之系统—权限分配(作者:小圣)

本节博文将向大家介绍本次Web应用之权限分配。

笔者会把大概实现过程贴出来,有看不懂过程且需要项目源码的请戳:http://download.csdn.net/detail/xie_xiansheng/9486872,需要数据库表格的请留言。有些小细节没完善,有些代码冗余,初学请见谅!本节博文需要json格式的第三方jar包,有需要的请戳:http://download.csdn.net/detail/xie_xiansheng/9488231 或者 http://download.csdn.net/detail/xie_xiansheng/9486876下载自己对应jdk版本的json-lib包,笔者自身是jdk13版本,还另外提供了jdk15版本,需要的可以去下载。

何为权限分配,就是本次驾培系统设置一个超级管理人员,这个管理人员能给在本平台上的所有用户进行权限分配。可以让用户登录后根据超级管理人员所分配的权限,给予与之相对应的权限操作。本次权限分配用了两个oracle数据表,一个是所有权限的表格,即全部权限都存在里面,并且设置权限的ID和等级。另一个是用户权限表格,根据超级管理人员所分配的权限,在用户权限表格上增删权限ID。说了这么多,不知道大家能不能明白,先上效果图。

权限分配演示一:超管登录,对admin用户进行权限分配。admin用户登录后,只能操作个人和系统管理。

权限分配演示二:超管登录,对hongxing用户进行权限分配。hongxing用户登录后,只能操作个人和系统管理。

看完上面两个gif图,大家应该明白此次实现的功能是什么了。本次权限分配用了一个第三方插件:Ztree,实现权限的树状列表。

下面给大家展现一下Ztree的demo,以便明白笔者是怎么实现这个权限分配的.

这是Ztree插件附带的demo,点击右键审查页面代码,可以看到:树状结构由一个zNodes实现

<link rel="stylesheet" href="../../../css/demo.css" type="text/css">
	<link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
	<script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
	<script type="text/javascript" src="../../../js/jquery.ztree.core-3.5.js"></script>
	<script type="text/javascript" src="../../../js/jquery.ztree.excheck-3.5.js"></script>
	<!--
	<script type="text/javascript" src="../../../js/jquery.ztree.exedit-3.5.js"></script>
	-->
	<SCRIPT type="text/javascript">
		<!--
		var setting = {
			check: {
				enable: true
			},
			data: {
				simpleData: {
					enable: true
				}
			}
		};

		var zNodes =[
			{ id:1, pId:0, name:"个人管理 1", open:true},
			{ id:3, pId:1, name:"随意勾选 1-1", open:true},
			{ id:5, pId:1, name:"随意勾选 1-1-1"},
			{ id:112, pId:11, name:"随意勾选 1-1-2"},
			{ id:12, pId:1, name:"随意勾选 1-2", open:true},
			{ id:121, pId:12, name:"随意勾选 1-2-1"},
			{ id:122, pId:12, name:"随意勾选 1-2-2"},
			{ id:2, pId:0, name:"随意勾选 2", checked:true, open:true},
			{ id:21, pId:2, name:"随意勾选 2-1"},
			{ id:22, pId:2, name:"随意勾选 2-2", open:true},
			{ id:221, pId:22, name:"随意勾选 2-2-1", checked:true},
			{ id:222, pId:22, name:"随意勾选 2-2-2", checked:false},
			{ id:23, pId:2, name:"随意勾选 2-3"},
		];

		var code;

		function setCheck() {
			var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
			py = $("#py").attr("checked")? "p":"",
			sy = $("#sy").attr("checked")? "s":"",
			pn = $("#pn").attr("checked")? "p":"",
			sn = $("#sn").attr("checked")? "s":"",
			type = { "Y":py + sy, "N":pn + sn};
			zTree.setting.check.chkboxType = type;
			showCode('setting.check.chkboxType = { "Y" : "' + type.Y + '", "N" : "' + type.N + '" };');
		}
		function showCode(str) {
			if (!code) code = $("#code");
			code.empty();
			code.append("<li>"+str+"</li>");
		}

		$(document).ready(function(){
			$.fn.zTree.init($("#treeDemo"), setting, zNodes);
			setCheck();
			$("#py").bind("change", setCheck);
			$("#sy").bind("change", setCheck);
			$("#pn").bind("change", setCheck);
			$("#sn").bind("change", setCheck);
		});
		//-->
	</SCRIPT>
</HEAD>

<BODY>
<div class="content_wrap">
	<div class="zTreeDemoBackground left">
		<ul id="treeDemo" class="ztree"></ul>
	</div>

</div>

下面附上实现代码和数据表:

全部权限的表格:

用户所有权限的表格:超管的user_id是1,他拥有全部权限ID

接下来请看我们的UserServlet:

public class UserServlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=utf-8");

		String task = req.getParameter("task");
		HttpSession session = req.getSession();
		//从登陆的传的session获取到用户信息
		UserBean userBean = (UserBean)session.getAttribute("Logindo");
		UserDao userDao = DaoFactory.getUserDao();

		PrintWriter writer = resp.getWriter();

		if("logout".equals(task)){
			session = req.getSession();
			session.invalidate();
			req.getRequestDispatcher("index.jsp").forward(req, resp);

		}else if("permission".equals(task)){
			//跳转到权限分配jsp
			int pagenum = Integer.parseInt(req.getParameter("pagenum"));
			int count = userDao.countUser();
			PageBean pageBean = new PageBean();
			pageBean.findPageBean(count, pagenum);
			List<UserBean> userBeans =userDao.findPage(pageBean);
			req.setAttribute("pageBean", pageBean);
			req.setAttribute("userBeans", userBeans);
			req.getRequestDispatcher("jsp/sysmanager/permission.jsp").forward(req, resp);
		}else if("delivery".equals(task)){
			//权限分配业务逻辑
			//TODO
			int deliveryUserId = Integer.parseInt(req.getParameter("userid"));
			userBean = userDao.findUser_ById(deliveryUserId);

			session.setAttribute("func_userBean", userBean);
			req.getRequestDispatcher("jsp/sysmanager/testfunc.jsp").forward(req, resp);
			//jsp点击权限分配
		}else if("test".equals(task)){
			int user_id = Integer.parseInt(req.getParameter("user_id")) ;
			//获取全部的权限列表
			List<FuncBean> funcList = DaoFactory.getFuncDao().getFunc_Already();
			//根据用户ID获取他所有的权限
			List<FuncBean> userList = DaoFactory.getFuncDao().getFunc_ALL(user_id);
			int userid = userBean.getUser_id();
			//获取出id,pid(权限父ID),name(权限名),open(是否展开),checked(默认选中)等属性
			List<FunctionBean> functionBeans = new ArrayList<FunctionBean>();
			//对全部权限列表进行迭代
			for (FuncBean Bean : funcList) {
				FunctionBean functionBean = new FunctionBean();
				//将权限表的所有信息set进去
				functionBean.setId(Bean.getFunc_id());
				functionBean.setpId(Bean.getFunc_pid());
				functionBean.setName(Bean.getFunc_name());
				//如果权限列表的父id为0,则默认展开
				if(Bean.getFunc_pid()==0){
					functionBean.setOpen(true);
				}else{
					functionBean.setOpen(false);
				}

				int flag = 0;
				//对用户已有权限列表进行迭代
				for (FuncBean itemBean : userList) {
					//如果用户已有权限ID与所有权限表的权限ID相等,则默认选中
					if(itemBean.getFunc_id()==Bean.getFunc_id()){
						flag = 1;
						functionBean.setChecked(true);
					}
				}
				//否则不选中
				if(flag == 0){
					functionBean.setChecked(false);
				}
				//将结果存到List<FunctionBean> functionBeans中
				functionBeans.add(functionBean);
			}
			//转换为JSON格式传到页面,转换为JSON格式,结果就是上文所需的zNodes格式[{id: ,pid: ,name:'',open:ture/false,checked:true/false}],不明白可以留言
			JSONArray funcjson  = JSONArray.fromObject(functionBeans);
			writer.write(funcjson.toString());
			writer.flush();
			//权限分配完成点击提交
		}else if("finish".equals(task)){
			//获取JSP页面传来的user_id
			int user_id = Integer.parseInt(req.getParameter("user_id")) ;
			//获取JSP页面传来的权限ID的字符串
			String rightsId = req.getParameter("rightsId");
			//截取成单个字符串数组
			String [] stringArr= rightsId.split(",");
			//String stringArr[] = req.getParameterValues("rightsId");

			//删除对应用户已有的权限
			DaoFactory.getFuncDao().deleteFunc_All(user_id);
			for (int i = 0; i < stringArr.length; i++) {
				if(!stringArr[i].equals("")){
					//如果权限ID不为空,则将权限添加进数据表
					int func_id = Integer.valueOf(stringArr[i]) ;
					DaoFactory.getFuncDao().addFunc_ByUserId(user_id,func_id);
				}

			}
			userBean = userDao.findUser_ById(user_id);
			req.setAttribute("msg", "分配成功,已保存!");
			session.setAttribute("func_userBean", userBean);
			req.getRequestDispatcher("jsp/sysmanager/testfunc.jsp").forward(req, resp);
		//导航-》关于/我的
		}else if("about".equals(task)){
			int driving_id = userBean.getDriving_id();
			String driving_name = DaoFactory.getDrivingSchDao().findDrivName_ById(driving_id);
			ApkBean apkBean = DaoFactory.getRoleDao().findApk_ByNewOne();

			req.setAttribute("apkBean", apkBean);
			req.setAttribute("driving_name", driving_name);
			req.setAttribute("userBean", userBean);
			req.getRequestDispatcher("jsp/sysmanager/about.jsp").forward(req, resp);
		}
	}
}

这是我们的权限分配的JSP:

<%@ page language="java" import="java.util.*,org.great.bean.*" pageEncoding="utf-8"%>
<%@page import="org.great.dao.DaoFactory"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'usermanager.jsp' starting page</title>

	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<link rel="stylesheet" type="text/css" href="<%=basePath%>/background/Style/skin.css" />
	<script type="text/javascript"
			src="<%=basePath%>/zTree/js/jquery-1.4.4.min.js">
    </script>
	<link rel="stylesheet" href="<%=basePath%>/zTree/css/demo.css"
			type="text/css">
		<link rel="stylesheet"
			href="<%=basePath%>/zTree/css/zTreeStyle/zTreeStyle.css"
			type="text/css">
		<script type="text/javascript"
			src="<%=basePath%>/zTree/js/jquery.ztree.core-3.5.js">
</script>
		<script type="text/javascript"
			src="<%=basePath%>/zTree/js/jquery.ztree.excheck-3.5.js">
</script>
  </head>
  <body>
        <table width="100%" border="0" cellpadding="0" cellspacing="0">
            <!-- 头部开始 -->
            <tr>
                <td width="17" valign="top" background="<%=basePath%>/background/Images/mail_left_bg.gif">
                    <img src="<%=basePath%>/background/Images/left_top_right.gif" width="17" height="29" />
                </td>
                <td valign="top" background="<%=basePath%>/background/Images/content_bg.gif">
                    <table width="100%" height="31" border="0" cellpadding="0" cellspacing="0" background="<%=basePath%>/background/<%=basePath%>/background/Images/content_bg.gif">
                        <tr><td height="31"><div class="title" style="color: red">权限分配</div></td></tr>
                    </table>
                </td>
                <td width="16" valign="top" background="<%=basePath%>/background/Images/mail_right_bg.gif"><img src="<%=basePath%>/background/Images/nav_right_bg.gif" width="16" height="29" /></td>
            </tr>
            <!-- 中间部分开始 -->
            <tr>
                <!--第一行左边框-->
                <td valign="middle" background="<%=basePath%>/background/Images/mail_left_bg.gif"> </td>
                <!--第一行中间内容-->
                <td valign="top" bgcolor="#F7F8F9">
                    <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
                        <!-- 空白行-->
                        <tr><td colspan="2" valign="top"> </td><td> </td><td valign="top"> </td></tr>
                        <tr>
                            <td colspan="4">
                                <table>
                                    <tr>
                                        <td width="100" align="center"><img src="<%=basePath%>/background/Images/mime.gif" /></td>
                                        <td valign="bottom"><h3 style="letter-spacing:1px;color: blue">在这里,您可以修改用户的权限</h3></td>
                                    </tr>
                                </table>
                            </td>
                        </tr>
                        <!-- 一条线 -->
                        <tr>
                            <td height="40" colspan="4">
                                <table width="100%" height="1" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC">
                                    <tr><td></td></tr>
                                </table>
                            </td>
                        </tr>
                        <!-- 产品列表开始 -->

                        <%UserBean userBean = (UserBean)session.getAttribute("func_userBean");
                        int user_id = userBean.getUser_id();
                         %>
                       <tr>
                            <td width="2%"> </td>
                            <td width="96%">
                                <table width="100%">
                                    <tr>
                                        <td colspan="2">
                                                <table width="100%"  class="cont tr_color">
                                                    <tr>
                                                        <th></th>
                                                        <th></th>
                                                        <th></th>
                                                        <th></th>
                                                        <th></th>
                                                        <th></th>

                                                    </tr>
                                                    <tr align="right" class="d">

                                                        <td colspan="2" style="width: 300px">
                                                        <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
                                                        <h2>您想对<span style="color: red"><%=userBean.getUser_name() %></span>分配什么样的权限?</h2>
                                                        </td>
                                                        <td>
                                                        <form action="user.do?task=finish" name="checkForm" method="post" >
															<div class="zTreeDemoBackground left">
																<ul id="treeDemo" class="ztree"></ul>
																<input type="hidden" id="user_id" name="user_id" value="<%=user_id%>">
															</div>
															<div style="margin-right: 120px">
															<br>
																<input type="hidden" name="rightsId" id="rightsId" />
																<input type="submit" value="保存" onclick="onCheck()"  />
															</div>
														</form>
														</td>
                                                        <td colspan="2" style="width: 300px">
                                                    </tr>

                                                </table>
                                        </td>
                                    </tr>
                                </table>
                            </td>
                            <td width="2%"> </td>
                        </tr>
                        <!-- 产品列表结束 -->
                        <tr>
                            <td height="40" colspan="4">
                                <table width="100%" height="1" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC">
                                    <tr><td></td></tr>
                                </table>
                            </td>
                        </tr>

                        <tr>
                            <td width="2%"> </td>
                            <td width="51%" class="left_txt">
                                <img src="<%=basePath%>/background/Images/icon_mail.gif" width="16" height="11"> 客户服务邮箱:[email protected]<br />
                                <img src="<%=basePath%>/background/Images/icon_phone.gif" width="17" height="14"> 官方网站:<a href="http://my.csdn.net/xie_xiansheng" target="_blank">作者博客</a>
                            </td>
                            <td> </td><td> </td>
                        </tr>
                    </table>
                </td>
                <td background="<%=basePath%>/background/Images/mail_right_bg.gif"> </td>
            </tr>
            <!-- 底部部分 -->
            <tr>
                <td valign="bottom" background="<%=basePath%>/background/Images/mail_left_bg.gif">
                    <img src="<%=basePath%>/background/Images/buttom_left.gif" width="17" height="17" />
                </td>
                <td background="<%=basePath%>/background/Images/buttom_bgs.gif">
                    <img src="<%=basePath%>/background/Images/buttom_bgs.gif" width="17" height="17">
                </td>
                <td valign="bottom" background="<%=basePath%>/background/Images/mail_right_bg.gif">
                    <img src="<%=basePath%>/background/Images/buttom_right.gif" width="16" height="17" />
                </td>
            </tr>
        </table>
    </body>
    <SCRIPT type="text/javascript">
    	var user_id = $("#user_id").val();

		var setting = {
			check: {
				enable: true,
				chkStyle: "checkbox",
		chkboxType: { "Y": "ps", "N": "ps" }

			},
			data: {
				simpleData: {
					enable: true
				}
			},
			callback:{
                onCheck:onCheck
            }
		};

 	 $(document).ready(function() {
        $.ajax( {
            url : "user.do?task=test&suibian=hehe&user_id="+user_id,
            type : "get",
            dataType : "test",
            success : function(data){
            	initZtree(data);
            }          

        });  

     });  

function initZtree(data) {
    var zNodes = JSON.parse(data);
   var zTreeObj = $.fn.zTree.init($('#treeDemo'), setting, zNodes);
}
function onCheck(e,treeId,treeNode){
            var treeObj=$.fn.zTree.getZTreeObj("treeDemo"),
            nodes=treeObj.getCheckedNodes(true),
            v="";
            for(var i=0;i<nodes.length;i++){
            v+=nodes[i].id + ",";

            }//这会返回我们选中的节点给Servlet,然后在Servlet进行操作,先删除对应USER_ID的全部权限,然后选中的权限添加进去
            $("#rightsId").attr("value", v);

}

     	var msg = "<%=request.getAttribute("msg")%>";
     	if("null"!=msg){
     		alert(msg);
     	}

	</SCRIPT>
</html>

我们的数据库操作FuncDaoImpl.class,实现了FuncDao接口层:

package org.great.daoimpl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.great.bean.FuncBean;
import org.great.dao.FuncDao;
import org.great.util.DBUtils;

public class FuncDaoImpl implements FuncDao{
	private PreparedStatement pre =  null;
	private ResultSet rs = null;

	/** 获得权限表数据*/
	public List<FuncBean> getFunc_ALL(int user_id){
		List<FuncBean> list = new ArrayList<FuncBean>();
		Connection conn = DBUtils.getConn();
		String sql = "select f.func_id,f.func_pid,f.func_name,f.func_url,f.func_level from t_function f," +
				"t_user_function rf where f.func_id = rf.func_id and rf.user_id = ?";
		try {
			pre = conn.prepareStatement(sql);
			pre.setInt(1, user_id);
			rs = pre.executeQuery();
			while(rs.next()){
				FuncBean funcBean = new FuncBean();
				funcBean.setFunc_id(rs.getInt(1));
				funcBean.setFunc_pid(rs.getInt(2));
				funcBean.setFunc_name(rs.getString(3));
				funcBean.setFunc_url(rs.getString(4));
				funcBean.setFunc_level(rs.getString(5));
				list.add(funcBean);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			DBUtils.close(conn, pre, rs);
		}

		return list;
	}

	//删除用户已有权限
	public void deleteFunc_All(int userId) {
		Connection conn = DBUtils.getConn();
		String sql = "delete t_user_function where user_id = ?";
		try {
			pre = conn.prepareStatement(sql);
			pre.setInt(1, userId);
			rs = pre.executeQuery();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			DBUtils.close(conn, pre, rs);
		}
	}
	//根据超级管理员分配的权限添加进权限表
	public void addFunc_ByUserId(int userId,int func_id) {
		Connection conn = DBUtils.getConn();
		String sql = "insert into t_user_function values(?,?)";
		try {
			pre = conn.prepareStatement(sql);
			pre.setInt(1, userId);
			pre.setInt(2, func_id);
			rs = pre.executeQuery();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			DBUtils.close(conn, pre, rs);
		}
	}
}

至此,权限分配完毕!

时间: 2024-08-02 14:38:11

Web应用——驾培管理系统之系统—权限分配(作者:小圣)的相关文章

Web应用——驾培管理系统之系统—用户管理(作者:小圣)

Web应用--驾培管理系统之系统-用户管理(作者:小圣) 本节展示本次Web应用的系统管理下的用户管理功能. 笔者会把大概实现过程贴出来,有看不懂过程且需要项目源码的请戳:http://download.csdn.net/detail/xie_xiansheng/9486872,需要数据库表格的请留言.有些小细节没完善,有些代码冗余,初学请见谅! 结果演示: 数据库的t_user表 代码对应的UserBean: public class UserBean { private int user_i

基于SpringBoot的驾校后台管理系统JDK8-java驾校后台管理系统驾考管理驾照考试系统

基于SpringBoot的驾校后台管理系统JDK8-java驾校后台管理系统驾考管理驾照考试系统 1.包含源程序,数据库脚本.代码和数据库脚本都有详细注释.2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善开发环境:Eclipse ,MYSQL,JDK1.8,Tomcat 7涉及技术点:MVC模式.SpringBoot.SpringMvc.Mybatis.Spring.HTML.JavaScript.CSS.JQUERY.DWR.Ajax等系统采用Mybatis框架实现ORM对象关系映射,

系统权限管理设计 (转)

权限设计(初稿)      1. 前言:      权限管理往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真.针对不同的应用,需要根据项目的实际情况和具体架构,在维护性.灵活性.完整性等N多个方案之间比较权衡,选择符合的方案.      2. 目标:      直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重要简单,包括概念数量上的简单和意义上的简单还有功能上的简单.想用一个权限系统解

系统权限管理设计 (转:http://blog.csdn.net/chexlong/article/details/37697555)

权限设计(转:http://blog.csdn.net/chexlong/article/details/37697555) 1. 前言: 权限管理往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断"Who对What(Which)进行How的操作"的逻辑表达式是否为真.针对不同的应用,需要根据项目的实际情况和具体架构,在维护性.灵活性.完整性等N多个方案之间比较权衡,选择符合的方案. 2. 目标: 直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重

Java开源生鲜电商平台-RBAC系统权限的设计与架构(源码可下载)

Java开源生鲜电商平台-RBAC系统权限的设计与架构(源码可下载) 说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上分析实现的策略以及基于目前两种比较流行的权限设计思想来讨论关于权限系统的实现. 1.1.       技术策略 l         身份认证 在B/S的系统中,为识别用户身份,通常使用的技术策略为将用户的身份记录在Session中,也就是当用户登录时即获取用户的身份信息,并将其记录

网站后台系统权限部分实现

基本上所有网站都有后台管理系统.系统根据业务划分成不同的系统角色.而每个角色肯定是拥有着不同的权限.这个权限就根据登录后功能菜单的多少来体现. 那么这是如何实现的呢? 在刚开始接触这方面的时候,意识到权限问题,自己随手写的练手项目是将帐号表中设置一个权限字段.比如1代表超级管理员,2代表普通用户种种.用户登录进来的时候,页面里用jstl标签判断权限类型,渲染不同的静态页面.这种方法确实是可行的.但是如果后期需要增加菜单,那么就需要更改代码,或者是增加角色,也需要更改代码.如果后期有一点点变动,都

26、生鲜电商平台-RBAC系统权限的设计与架构

说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上分析实现的策略以及基于目前两种比较流行的权限设计思想来讨论关于权限系统的实现. 1.1.       技术策略 l         身份认证 在B/S的系统中,为识别用户身份,通常使用的技术策略为将用户的身份记录在Session中,也就是当用户登录时即获取用户的身份信息,并将其记录到Session里,当需要进行身份认证的时候通过从Session中获取

关于如何在你的Web项目中实现对空间数据访问权限的控制(一)

Wednesday, 23 JUNE 近来一直在研究关于如何在我的WebGIS项目中实现对空间数据(已发布在GeoServer上)进行权限管理的问题.虽然到目前为止没能找到一个完美的解决方案,但通过这些天的学习与查阅资料,思路上多少有了一些进展,因此记录下来,做一个简单的小结. 1-GeoServer中的Security模块 GeoServer是一个基于J2EE基础实现的,允许用户共享和编辑地理空间数据的GIS应用服务器.——FROM GeoServer官方介绍. 其实,GeoServer的本质

OA系统权限管理设计(转载)

不论什么系统都离不开权限的管理,有一个好的权限管理模块,不仅使我们的系统操作自如,管理方便,也为系统加入亮点. l         不同职责的人员,对于系统操作的权限应该是不同的.优秀的业务系统,这是最主要的功能. l         能够对"组"进行权限分配.对于一个大企业的业务系统来说,假设要求管理员为其下员工逐一分配系统操作权限的话,是件耗时且不够方便的事情.所以,系统中就提出了对"组"进行操作的概念,将权限一致的人员编入同一组,然后对该组进行权限分配. l