1414.BS架构的权限管理系统毕业设计论文.doc

上传人:仙人指路1688 文档编号:3929930 上传时间:2023-03-28 格式:DOC 页数:20 大小:156KB
返回 下载 相关 举报
1414.BS架构的权限管理系统毕业设计论文.doc_第1页
第1页 / 共20页
1414.BS架构的权限管理系统毕业设计论文.doc_第2页
第2页 / 共20页
1414.BS架构的权限管理系统毕业设计论文.doc_第3页
第3页 / 共20页
1414.BS架构的权限管理系统毕业设计论文.doc_第4页
第4页 / 共20页
1414.BS架构的权限管理系统毕业设计论文.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《1414.BS架构的权限管理系统毕业设计论文.doc》由会员分享,可在线阅读,更多相关《1414.BS架构的权限管理系统毕业设计论文.doc(20页珍藏版)》请在三一办公上搜索。

1、 毕 业 实 习 报 告题 目: B/S架构的权限管理系统 系 别: 计算机科学与技术 专业班级: 软件技术 学 号: 学生姓名: 指导教师: 2007年3月12日 2007年6月12日摘 要管理信息系统是一个复杂的人机交互系统,其中每个具体环节都可能受到安全威胁。构建强健的权限管理系统,保证管理信息系统的安全性是十分重要的。权限管理系统是管理信息系统中可代码重用性最高的模块之一。任何多用户的系统都不可避免的涉及到相同的权限需求,都需要解决实体鉴别、数据保密性、数据完整性、防抵赖和访问控制等安全服务(据ISO7498-2)。例如,访问控制服务要求系统根据操作者已经设定的操作权限,控制操作者可以

2、访问哪些资源,以及确定对资源如何进行操作。目前,权限管理系统也是重复开发率最高的模块之一。在企业中,不同的应用系统都拥有一套独立的权限管理系统。每套权限管理系统只满足自身系统的权限管理需要,无论在数据存储、权限访问和权限控制机制等方面都可能不一样,这种不一致性存在如下弊端:1)系统管理员需要维护多套权限管理系统,重复劳动。2)用户管理、组织机构等数据重复维护,数据一致性、完整性得不到保证。3)由于权限管理系统的设计不同,概念解释不同,采用的技术有差异,权限管理系统之间的集成存在问题,实现单点登录难度十分大,也给企业构建企业门户带来困难。采用统一的安全管理设计思想,规范化设计和先进的技术架构体系

3、,构建一个通用的、完善的、安全的、易于管理的、有良好的可移植性和扩展性的权限管理系统,使得权限管理系统真正成为权限控制的核心,在维护系统安全方面发挥重要的作用,是十分必要的。关键词:J2EE、JSP、ServletJDBC、JavaBean、Tomcat、MVC目录摘 要2目录3第一章 引言41.1 权限管理系统的基本内容41.2 权限管理系统的意义4第二章 系统需求分析52.1 权限管理系统概要52.1.1 后台功能模块52.1.2 前台权限测试7第三章系统设计与实现83.1 权限管理系统实现MVC架构83.2 数据库设计93.2.1 数据库关系图93.2.2 数据库可行性分析93.3 持久

4、层103.4 逻辑层17总结19参考文献20第一章 引言1.1 权限管理系统的基本内容 权限管理系统是很多系统的一个必不可少的一个模块功能,主要功能包括:用户信息管理、角色信息管理、模块信息管理、权限管理及其分配。本系统通过分配角色给每个用户,使其拥有相应的权限,并且可以对角色也可以进行添加、修改、删除等操作。角色者拥有相应的权限,同时也可以对权限进去添加、修改、删除等操作。本系统主要为构建一个通用的、完善的、安全的、易于管理的、有良好的可移植性和扩展性的权限管理系统为目标而完成。1.2 权限管理系统的意义 权限管理是Web应用项目中比较关键的环节,因为浏览器是每一台计算机都已具备的,如果不建

5、立权限管理系统,那么一个“非法用户”可以轻而易举通过浏览器访问Web应用项目中的所有功能。因此需要权限管理系统进行权限检测,让经过授权的用户可以正常合法的使用已授权的功能,而对那些未授权的非法用户拒之门外。权限管理系统应该对每一类或每一个用户,分配不同的系统操作权限,并应具有扩展性,也就是它可以加入到任何一个带有权限管理的Web应用项目中,就像构件一样可以被重复使用。第二章 系统需求分析2.1 权限管理系统概要2.1.1 后台功能模块(1)登录模块 把用户输入的用户名及其密码带后台与数据库中该用户的信息进行验证,如果用户名存在并且密码正确则进入系统;如果错误,则返回错误提示页要求用户重新输入用

6、户名及其密码。(2)用户信息模块添加新用户要求管理员详细的填写添加新用户表单,提交后系统后台验证该用户是否已经存在,如果没有则把新用户资料添加进数据库并且返回添加成功页,如果该用户已存在则直接返回错误提示页。用户管理显示出数据库中所有用户的简略资料,包括:编号、姓名、部门、电话。用户查询管理员可以输入用户的查询条件来查询用户,条件包括:编号、姓名、角色,只要输入三个条件中的一个则可以查询到该用户。用户详细资料显示管理员可以查询到用户的具体资料,包括:编号、用户登录帐号、用户登录密码、姓名、部门、办公室、电话、E-Mail、是否在职状态、拥有的角色信息。用户资料修改管理员可以修改用户的基本资料,

7、包括用户登录密码、姓名、部门、办公室、电话、E-Mail、是否在职状态。删除用户管理员可以删除任意用户,并且删除用户的同时该用户所有的角色信息将同时被删除。指定角色管理员可以对用户的角色进行设置,包括添加、删除用户的角色信息(3)角色信息模块添加新角色添加新角色信息,主要信息包括:角色名。角色详细信息显示该角色的详细信息,有角色名及其拥有该角色的用户简略资料。删除角色删除选中的角色,并且同时将删除所有用户的该角色信息和该角色拥有的所有权限信息。指定用户可以指定一个或多个用户的该角色信息,同时也有删除某个用户该角色的功能。(4)权限模块添加新权限模块添加新权限模块信息,信息包括:权限名、权限介绍

8、。删除权限模块删除某个权限模块,删除同时将删除拥有该权限所有的角色信息。修改权限模块修改权限模块的权限名和权限介绍。(5)权限管理指定某个角色应该具有的权限(角色模块)分配权限模块给角色,同时也可以修改某个角色的权限信息。指定某个用户具有的特殊权限(用户角色)分配角色给用户,同时也可以修改某个用户的角色信息。2.1.2 前台权限测试(1)登录前台测试页面把用户输入的用户名及其密码带后台与数据库中该用户的信息进行验证,如果用户名存在并且密码正确则进入系统;如果错误,则返回错误提示页要求用户重新输入用户名及其密码。并且如果登录成功将返回用户的具体资料到页面显示。(2)测试用户权限用户登录系统以后,

9、可以通过页面显示出来的所有权限进行测试,测试该用户是否拥有所选中的权限。第三章系统设计与实现3.1 权限管理系统实现MVC架构模型视图控制器(MVC)是XeroxPARC在八十年代为编程语言Smalltalk80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎。模型视图控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。视图是

10、用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括MacromediaFlash和象XHTML,XML/XSL,WML等一些标识语言和Webservices.模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusionComponents这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所

11、以减少了代码的重复性。控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。Java开发Web Application有几种符合MVC设计模式的开发方式:1: Jsp+Servlet+JavaBean(EJB) 2:Jsp+JavaBean(Controller)+JavaBean(EJB)(Model)3:TDK(Turbine,Velocity.)4:Xsp5:Jsp+Struts+JavaBean(EJB)

12、3.2 数据库设计数据库是管理信息系统的核心内容。目前,Web与数据库接口技术有很多,其中JDBC是Java程序连接和存取数据库的应用程序接口,由一组用Java语言编写的类与接口组成,是执行SQL语句的Java API。本文介绍的管理信息系统中,在数据的存取方面,采用了 JSP/Servlet+JDBC的技术,即客户端不产生数据库查询命令,客户端上的浏览器通过URL和中间层的Web服务器建立连接。Web服务器主要负责接收本地或远程浏览器的HTTP数据请求,然后中间层的Servlet收到请求后,通过执行程序中的SQL语句,利用JDBC提供的标准API对数据库进行访问和相应的操作处理。Servle

13、t再将查询的数据传给JSP,最后生成标准的JSP页面将结果返回给提出请求的浏览器。这样,不仅将客户端与数据库服务器端分开,同时提高了数据库的访问效率。3.2.1 数据库关系图 图3.1 数据库关系图3.2.2 数据库可行性分析表3.1 数据库可行性分析编号功能SQL语句1添加新用户Insert into master (username, logonid, password, department, office, phone, email, state) values (?,?,?,?,?,?,?,?)2查询所有用户信息select * from master3通过用户ID或姓名查询用户资料

14、select * from master where userid=? or username=?4通过角色名查询用户信息select * from master userid=(select userid from mastergroup where role=?)5修改用户信息Update action set usernme=?, logonid=?, password=?, department=?, office=?, phone=?,email=?,state=? where userid=?6删除一个用户delete master where userid=?7查询所有权限模块信

15、息select * from action8添加一个新权限模块insert into action(actionname,explain) values(?,?)9修改权限模块信息update action set actionname=?,explain=? where actionid=?10删除某个权限模块信息delete action where actionid=?11查询所有角色信息select * from role12添加一个新角色信息insert into role(rolename) values(?)13修改某个角色信息update action set rolename

16、=? where roleid=?14删除某个角色信息delete role where roleid=?15查询某个角色所拥有的权限select * from actiongroup where role=?16添加某个角色的权限insert into actiongroup(roleid,actionid) values(?,?)17修改某个角色的权限信息1、delete actiongroup where roleid=?2、insert into actiongroup(roleid,actionid) values(?,?)18删除某个角色的所有权限信息delete actiongr

17、oup where roleid=?19查询某个用户说拥有的角色信息select * from mastergroup where userid=?20添加某个用户所拥有的角色信息insert into master(userid,roleid) values(?,?)21修改某个用户所拥有的角色信息1、delete mastergroup where userid=?2、insert into master(userid,roleid) values(?,?)22删除某个用户的所有角色信息delete mastergroup where userid=?3.3 持久层在权限管理系统的开发中,

18、基于MVC设计模式的思想,结合系统的实际情况,我们将持久层按照分工进行了进一步划分。持久层由许多Bean和DAO组成,Bean主要用于保存用户组对象数据,DAO主要用于对数据库的操作。首先,DAO获得由Servlet传过来的信息,将这些业务信息封装在对应Bean定义的对象实例中,根据业务逻辑对信息进行处理。当需要进行调用数据库的存取操作时,DAO将对象实例以及相应的控制信息通过数据库接口方法完成对数据库的操作。数据库操作完成后,再将返回的记录集封装成Bean的对象实例,进行一定的处理后,将这些需要返回到界面的信息返回到界面上。图3.2 Bean和DAO关系图以下是MastergroupDAO中

19、的部分代码public class MastergroupDAO /com.ccniit.bookshop.db.DBMain的对象,用来调用getPrepareStatement(String sqlStr)方法private com.ccniit.action.db.DBMain dbMain = new DBMain(); /java.sql.PreparedStatement的对象,用来执行SQL语句private PreparedStatement pst; /java.sql.ResultSet的对象,用来接受查询得到的结果private ResultSet rs;/通过useri

20、d和roleid验证用户权限public boolean getMastergroupByUserId(int userid,int roleid) throws ClassNotFoundException,SQLExceptionArrayList mastergroupList = new ArrayList();String sqlStr = select * from mastergroup where userid=? and roleid=?;pst = dbMain.getPreparedStatement(sqlStr);pst.setInt(1, userid);pst.s

21、etInt(2, roleid);rs = pst.executeQuery();if(rs.next()return true;elsereturn false;/查询Mastergroup表中某个用户所拥有的角色信息public ArrayList getMastergroupByUserid(Mastergroup mastergroup) throws ClassNotFoundException,SQLExceptionArrayList mastergroupList = new ArrayList();String sqlStr = select * from mastergro

22、up where userid=?;pst = dbMain.getPreparedStatement(sqlStr);pst.setInt(1, mastergroup.getUserid();rs = pst.executeQuery();while (rs.next()mastergroupList.add(assembleMastergroup(rs);this.realse();return mastergroupList; /通过userid查询所有的roleidpublic ArrayList getRoleidByUserid(Mastergroup mastergroup)

23、throws ClassNotFoundException,SQLExceptionArrayList mastergroupList = new ArrayList();String sqlStr = select roleid from mastergroup where userid=?;pst = dbMain.getPreparedStatement(sqlStr);pst.setInt(1, mastergroup.getUserid();rs = pst.executeQuery();while (rs.next()mastergroupList.add(assembleRole

24、id(rs);this.realse();return mastergroupList;/向Mastergroup表中添加多条记录public void addMastergroup(int userid,int roleids) throws SQLException, ClassNotFoundExceptionString sqlStr = insert into mastergroup(userid,roleid) values(?,?);pst = dbMain.getPreparedStatement(sqlStr);for(int i=0;iroleids.length;i+)p

25、st.clearParameters();pst.setInt(1, userid);pst.setInt(2, roleidsi);pst.executeUpdate();this.realse();/添加多条记录,roleId为单一,UserId为多条public void addMastergroupByUserId(int userids,int roleid) throws SQLException, ClassNotFoundExceptionString sqlStr = insert into mastergroup(userid,roleid) values(?,?);pst

26、 = dbMain.getPreparedStatement(sqlStr);for(int i=0;iuserids.length;i+)pst.clearParameters();pst.setInt(1, useridsi);pst.setInt(2, roleid);pst.executeUpdate();this.realse();/通过role删除表中多条记录public void deletMastergroupByRoleId(Mastergroup mastergroup) throws SQLException,ClassNotFoundExceptionString sq

27、lStr = delete mastergroup where roleid=?;pst = dbMain.getPreparedStatement(sqlStr);pst.setInt(1, mastergroup.getRoleid();pst.executeUpdate();this.realse();/删除Mastergroup表中多条记录public void deletMastergroup(Mastergroup mastergroup) throws SQLException,ClassNotFoundExceptionString sqlStr = delete master

28、group where userid=?;pst = dbMain.getPreparedStatement(sqlStr);pst.setInt(1, mastergroup.getUserid();pst.executeUpdate();this.realse();/将当前结果集中的数据构造成一个对象public static Mastergroup assembleMastergroup(ResultSet rs) throws SQLException,ClassNotFoundExceptionMastergroup mastergroup = new Mastergroup();m

29、astergroup.setId(rs.getInt(id);mastergroup.setUserid(rs.getInt(userid);mastergroup.setRoleid(rs.getInt(roleid);return mastergroup;public static Mastergroup assembleRoleid(ResultSet rs) throws SQLException,ClassNotFoundExceptionMastergroup mastergroup = new Mastergroup();mastergroup.setRoleid(rs.getI

30、nt(roleid);return mastergroup;/释放数据库资源public void realse() throws SQLExceptionif (rs != null)rs.close();if (pst != null)pst.close();if (dbMain != null)dbMain.release();表3.2 权限管理系统系统的所有包编号包名作用1com.ccniit.action. db用于对数据库的连接2com.ccniit.action.db.action用户对数据库中action表的操作3com.ccniit.action.db.actiongroup

31、用于对数据库中actiongroup表的操作4com.ccniit.action.db.master用于对数据库中master表的操作5com.ccniit.action.db.mastergroup用于对数据库中mastergroup表的操作6com.ccniit.action.db.role用于对数据库中role表的操作3.4 逻辑层图3.3 逻辑层关系图整个权限管理系统采用MVC的三层体系结构。通过JSP页面发送请求到服务器中的一个Servlet,通过Servlet对数据的进一步的处理后返回到下一个JSP页面中,从而实现与客户机进行信息资源的交互。系统的客户端只需要一个浏览器即可。相关人

32、员通过浏览器来查询、增加、修改、删除数据,对信息进行管理。表3.3 权限管理系统中所有Servlet类编号类名作用1ActionServlet.java用于处理权限模块的页面信息2LoginServlet.java用于处理登录模块的页面信息3RoleServlet用于处理角色模块的页面信息4RoleToModuleServlet.java用于处理分配权限给角色的页面信息5UserToModuleServlet.java用于处理分配角色给用户的页面信息6UserServlet.java用于处理用户模块的页面信息7TestServlet.java用于处理测试权限页面的信息以下是权限管理系统中分配给

33、用户分配角色信息的部分代码:String success = AccessAppiontModule;String useridStr = request.getParameter(userid);int userid = Integer.parseInt(useridStr);mastergroup.setUserid(userid);if (request.getParameterValues(roleid) != null)String roleidStr = (String)request.getParameterValues(roleid);int roleids = new int

34、roleidStr.length;for(int i=0;iroleidStr.length;i+)roleidsi = Integer.parseInt(roleidStri);mastergroupDAO.deletMastergroup(mastergroup);mastergroupDAO.addMastergroup(userid, roleids);elsemastergroupDAO.deletMastergroup(mastergroup);request.getRequestDispatcher(success).forward(request, response);总结在进行项目开发的过程中我们曾查阅许多资料,收集了大量的关于权限管理系统国内外的研究成果。由于该系统是自己独立完成,很多方面的问题都需要自己独立的思考完成,并且在自己做的系统中可能存在很多的安全因素,所以在以后的学习中还得更加努力,并且要多多动手实践。参考文献1权限系统控制UserSystem, 张辉, 2006-01-18, 2基于角色管理(RBAC)的权限系统, hippopotamus, 2006-02-213实现业务系统中的用户权限管理-设计篇, niuniu, 2006-01-18,4基于RBAC模型的权限管理系统的设计和实现, 裴辉东、梁云风, 2006-11-22,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号