传智播客Java培训--OA(权限控制)

 一步一个脚印,踏踏实实的做事情,切忌心浮气躁,眼高手低。

   今天我们做的是权限控制模块,这个模块在项目中不可或缺的,几乎所有的系统中都需要做权限。

首先解决上次课遗留的两个问题:

1 用户管理中的用户密码使用明文密码的MD5摘要

  使用Apache的codec包中的DigestUtils.md5Hex()方法将密码转换为MD5的形式

2 登录名的唯一性验证

  使用Ajax技术进行验证,在用户注册的表单登录名的<html:text>的styleclass属性中添加required指定为必选项和remote属性指定验证登陆名的方法的路径。 remote是远程验证,返回值只能是true(验证成功)或false(验证失败)。

remote使用时遇到的问题:添加用户时需要验证用户名是否存在,当添加上一个用户后,在不离开该页面的情况下,再次添加该用户名的用户,validate不能提示该用户已存在,因为缓存的原因,jquery仍认为该用户名可用。解决方法是在页面中添加:

$().ready(function(){

$.ajaxSetup ({

        cache: false //关闭AJAX相应的缓存

}); // 关闭缓存功能

});

 

    权限可简单表述为这样的逻辑表达式:判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真。用户有什么权限,也就是有多少“资源+操作”的许可,存在着两种权限管理:其一是功能权限的管理(粗粒度),另外一种则是数据权限的管理(细粒度)

项目中可能存在的权限需求的分类

1, 系统权限,主要是以模块为单位的权限划分,用户对该模块可见不可见。

2, 对象实例级权限,具体说就是对每条数据都要实现权限控制。

3, 数据字段权限,每条业务数据权限可以精确控制到每一个字段。

我们要做的菜单和菜单内的按钮的权限管理属于第二种,使用URL列表进行控制。让每一个用户都有一个可以访问的url列表代表用户的权限。使用角色进行权限分配,跟数据库中的角色类似,这样管理者就不必再进行对其下员工逐一分配操作权限的繁琐操作了了。

权限系统的构成部分

创建权限 首先将系统中有哪些权限做好

分配权限 为用户设定指定的权限

使用权限 用户可以去访问系统的各个功能时,系统进行权限验证判断是否具有访问权限

 

我们完成的功能:

1 初始化数据

   添加一个系统管理员用户为其他的用户设定权限

   添加资源数据

2 岗位管理分配权限

  在分配权限的页面还使用jQuery的TreeView插件显示树形结构,这个插件使用起来非常简单,只要将JS文件导入,然后加载时用“$(UL标签的id).treeview()即可显示树形结构了,关键是如何对应格式的权限列表,这里又用到了递归,最后使用jQuery实现一些细节操作。

3 用户登陆注销

   只有用户登陆后才能进行相应操作

4 根据用户权限决定菜单按钮显示

  使用自定义标签的方式,在页面相应的超链接外面嵌套自定义标签,在自定义标签中定义name属性表明可以显示这个超链接,当用户登录时判断用户的权限列表内是否有该权限,有则显示,没有则不显示。

5 权限验证,拦截所有的访问请求(*.jsp与*.do),有权限才可以访问。没有权限时转到登录页面或没有权限页面。

  使用过滤器

 过滤器的dofilter()方法中的逻辑代码:

doFilter(){
 User currentUser = 当前登录用户;
 String url = 当前访问的URL;
 // 格式为 /xx.do?method=xx,且method=addUI与method=add是同一个权限

if ("/InitDataAction.do".equals(url)) { // 初始化数据的操作
   chain.doFilter(request, response);
 }else if (currentUser == null) { // 未登录用户
  if(如果请求的是登录){
   chain.doFilter(); 
  }else{
   转到登录页面
  }
 }else{ // 已登录
  if(是超级管理员){
   chain.doFilter(); 
  }else{
   if(不需要权限){
    chain.doFilter(); 
   }
   else{
    boolean 有权限 = currentUser.allResources.contains(url);

    if(有权限){
     chain.doFilter(); 
    }else{
     转到没有权限的提示页面
    }
   }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目涉及技术:    1、前端:jsp、css、javascript、jQuery(js框架)、jQueryEasyUi(基于jQuery的前端框架)+BootStrap(前端框架)、dTree插件、富文本编辑器等 2、后台:SpringMvc、Spring、Hibernate(持久层框架)、JPA、MD5加密、Spring Boot、 log4J日志框架、jstl、jstl自定义分页标签等3、项目管理工具:Maven4、数据库:Mysql5、服务器:Tomcat项目开发涉及功能: 1、项目以及数据库搭建2、用户异步登录、退出以及记住用户信息3、自定义分页标签实现(24种样式随意切换)4、拦截器功能实现5、整合前端框架 EasyUi以及Bootstrap6、用户模块信息添加、修改、删除、多条件分页查询、激活、预览、用户账号异步校验、异步加载部门以及职位信息7、角色模块添加、删除、修改、分页查询、角色绑定以及解绑用户、角色绑定以及解绑操作8、Spring事务处理机制讲解9、模块管理增加、修改、删除、分页查询、整合dTree树形插件10、项目实现权限控制11、公告模块整合富文本编辑器12、密码进行MD5加密13、项目改版成Spring Boot实现14、代码机器人使用等等功能其他实战项目:java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771 java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008 java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007 JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543 JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572 JavaWeb项目实战之宿舍管理系统(Java毕业设计含源码)https://edu.csdn.net/course/detail/26721 JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610 java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770 java美妆商城项目|在线购书系统(java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989 系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941 Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值