您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 权限拦截设计与实现方案.
软件系统中权限管理的设计与实现方案周亮2151002024权限管理必要性•应用广泛:权限管理的概念几乎在每件事情上都有体现,比如门卫具有开门锁门的权限,老师具有布置作业和评分的权限,学生具有借书上课的权限等等。软件同样必要:在软件系统中实现权限管理也是必须的,应该限制员工只能执行相应的操作。(教务系统中的学生和老师的权限,图书管理系统中的读者和管理员)•问题:在软件系统中如何实现权限管理的?本次讲解目标•目标:让你在设计任何软件时都不再为权限管理问题而发愁。•讲解案例:购物商城系统中权限管理为例来进行分析和设计。系统需求描述•一个购物网站有以下几个功能模块。想让系统的不同管理人员登陆系统后只能操作分配给自己的功能。•关键:权限问题,不同部门的员工赋予不同的权限。购物商城用户管理模块部门员工管理模块订单管理模块查看统计用户员工管理部门管理查看订单设置订单发货状态产品管理模块产品类别产品需求描述功能处理流程实现思路•人事管理员工添加新的部门。•此处:人事管理员工要拥有添加部门权限,执行添加部门功能需要添加权限,拦截器拦截确认。1.让用户拥有权限2.标明访问方法所需权限3.权限拦截,获得用户具有的权限,获取被访问方法需要的权限,两者比较,得出是否具有权限实现步骤分析•1.权限描述,系统中有很多功能,为了实现对每个功能的操作都有权限设置,所以要对系统的所有功能都进行权限描述。•2.角色定义,权限最终会分配给管理人员,为了方便管理,可以设置角色,可以为角色添加多种权限,然后再将角色设置给管理员工,那么员工就具有相应的权限了。比如:系统中可以设置“人事管理员”、“采购管理员”、“发货管理员”等角色。•3.为员工设置角色,可以为员工设置不同的角色。老板可以拥有所有角色,人事部员工只应该设置“人事管理员角色”•4.权限拦截,角色分配好后,当员工登陆系统后进行某些操作之前应该先判断该员工是否拥有相应的操作权限,如果拥有则允许执行否则进行相应的提示。权限定义功能实现角色定义给员工分配角色权限拦截权限定义•目的:描述系统中的所有功能。•数据库实现:建立一个权限表SystemPrivilege•表中有如下3个属性:•module;//权限所属模块,department•privailege;//权限,比如delete•name;//权限名称,比如“部门删除”•描述权限案例:部门管理模块下的部门删除权限.•(department,delete,“部门删除”)SystemPrivilege数据表中数据存储moduleprivailegenamedepartmentdelete部门删除departmentadd部门添加departmentmodify部门修改employeedelete员工删除权限数据存储时机•系统的所有权限是在系统设计完成后就会明确的,所以权限的所有数据应该系统初始化后就应该立即完成。通过浏览器访问来初始化权限数据•访问:来初始化权限数据。•为了防止多次执行初始化操作,所以在执行添加权限数据时要判断数据是否已经存在。返回角色定义•目的:拥有一类权限,方便分配给管理人员,免除一个一个分配权限的麻烦。•数据库实现:建立一个角色表,和“角色-权限关系表”•角色表中含有2个属性:•groupid;//角色id•name;//角色名称返回角色数据添加时机•前提:角色数据的添加要在权限数据已添加的基础上才可以进行。•时机:可以根据业务需要后期添加不同的角色,因为角色是使用者定义的,开发者在开发阶段不可能想到所有的角色,使用者应该在使用过程中根据需要添加不同的角色。•比如:图书馆管理系统中,图书的管理和读者的管理可以设置成一个角色“图书管理员”,有一天馆长觉得不放心又重新添加一个角色“读者管理员”。并且让图馆只负责图书管理,读馆负责读者管理。给员工分配角色•目的:让该员工具有使用某些功能的权限,从而进行相应的工作。•数据库实现:建立一个“员工角色关系表”存放员工和角色之间的关系。返回给员工分配角色时机•前提:要分配的角色要先存在•时机:根据需求定,当人事部门新招一个员工时,就可以为该员工分配“人事管理员角色”,从而让该员工可以进入网站进行相应的管理操作。权限拦截•目的:权限识别,防止越权操作。•1.粗粒度:通过路径拦截,根据用户权限限制用户访问的路径。比如后台的所有管理界面只有管理员登录后才可以访问。•2.细粒度:用户查看到某个具体页面后,对页面上的一些功能进行拦截,根据用户权限限制用户只可以操作哪些按钮功能。比如添加部门功能只有具有权限才能执行。权限拦截粗粒度细粒度粗粒度拦截•关键技术:Filter实现:1.约定:为了进行拦截,所以我们的一些页面路径的设置应该遵循一定的规则约定。比如:凡是管理员要访问的页面的访问路径都要设置在control关键字后面。员工管理界面部门管理界面2.拦截:在javaWeb中你可以编写Filter来过滤特定路径下所有访问。比如:过滤下的所有请求,这样凡是以开头的请求都会被Filter拦截到。细粒度拦截•关键技术:AOP(面向切面编程)•实现:•1.标明被拦截的功能需要哪些权限(注解或者数据表)。•@Permission(module=department,privilege=view)•publicActionForwardexecute()表明访问execute需要department的view权限。•2.通过Aop拦截到用户使用了某个功能,并调用通知。•3.在通知中判断用户是否具有使用该功能的权限,如果有则执行该功能,没有则给出提示。返回Aop简介•系统中存在交叉业务,一个交叉业务就是要切入到系统中的一个方面,如下所示:安全事务日志StudentService------|----------|------------|-------------CourseService------|----------|------------|-------------MiscService------|----------|------------|-------------•用具体的程序代码描述交叉业务:method1method2method3{{{------------------------------------------------------切面..............------------------------------------------------------切面}}}•交叉业务的编程问题即为面向方面的编程(Aspectorientedprogram,简称AOP),AOP的目标就是要使交叉业务模•块化。可以采用将切面代码移动到原始方法的周围,这与直接在方法中编写切面代码的运行效果是一样的,如下所示:------------------------------------------------------切面func1func2func3{{{..............}}}------------------------------------------------------切面•使用代理技术正好可以解决这种问题,代理是实现AOP功能的核心和关键技术。返回Thankyou周亮2151002024
本文标题:权限拦截设计与实现方案.
链接地址:https://www.777doc.com/doc-2328918 .html