项目开发中关于权限的实现方案简单描述(帮助以后回忆)

摘要:
以下是对权限实现的简要介绍权限主要分为以下三类:用户、角色和权限表权限主要分三个步骤:1.安装管理员:具有所有权限的用户,在安装程序时将对其进行初始化。权限数据:该表主要存储权限的名称和url。此权限有两个主要功能。一个是菜单的显示,其中第一级菜单没有url,只有分类。

最近一直在研究权限,今天终于把权限搞定了以后准备自己写个商城,对以后的帮助非常大的。下面简单谈谈关于权限的实现.

  权限主要分为以下三个类:

    用户、角色、权限表

  权限主要分为三个步骤:

    1、安装(初始化数据)

      管理员:(超级管理员)一个拥有所有权限的用户,这个用户在程序安装时就要初始化,

      权限数据:这个表主要存储权限的名字和url,这个权限主要有两个作用,一个是菜单的显示,其中一级菜单没有url只是分类的作用。

    2、权限的分配:

      权限的分配主要是针对某个角色和权限建立管理,权限表和角色表是多对多的关系

    3、权限的使用:

      权限的使用,我们要做到,具有哪些权限就能让用户看到哪些权限,而且看不到的权限即使通过url访问也没有访问的权限

  具体实现如下:

    1、左侧菜单的显示:

      左侧菜单一般我们是首先用一个监听器,在程序启动时,将所有的顶级权限查出来放到application最大的作用域中,然后在用户登录时,从application作用域中去拿    权限数据,在菜单遍历的过程中在user类中写个判断是否具有权限的方法,然后用标签去判断,如果有就显示如果没有就不去显示,这样就可以实现菜单的显示了

      好处:我们也可以每次用户登录时去数据库中查询,这样会浪费很多的资源,因为权限的数据是我们在一开始时就初始化好的,一般菜单是不会变得,所有放到作用域    中,不仅仅效率高而且也降低资源的浪费,如果我们需要新增加新的菜单只需要重启下程序就好了

    2、右侧连接的显示:

      比如说是否具有部门删除的权限,我们可以在user里面写个根据url判断权限的方法,同上面的实现一样,首先从session中取出所有的角色,然后遍历所有的角色,内    部遍历所有角色的权限,然后和正在遍历的权限对比,如果有就显示,没有就不显示。

      如果我们使用的struts标签,我们可以重新定义下<s:a></s:a>标签的实现,首先判断是否具有权限,这样我们可以在页面层什么都不用更改即可实现权限效果。

    3、action的拦截

      前两步我们只是实现的表现层的目的,做到了用户具有什么权限就显示什么数据,但是如果用户通过url直接访问的话还是可以对数据进行操作的,那么如果实现对每次    请求的拦截呢?还是通过interceptor拦截器。

      我们首先写个检查权限的拦截器,继承abstractInterceptor,然后在struts.xml中配置下就好了。

        权限主要分为一般权限,登录权限,和登录后具有的不用管理的权限,

        一般权限:比如部门的增删改查

        登录权限:比如登录

        不用管理的权限:如果注销

      

免责声明:文章转载自《项目开发中关于权限的实现方案简单描述(帮助以后回忆)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Domino Internet邮件[Oracle] Oracle和SQLServer的数据类型比较下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

echarts折线图 鼠标移入改变小点显示样式

=undefined){res+=nameList[i].seriesName+':'+nameList[i].data+'%'+''}}res=res.split;returnres[0]+''+res[1];}}echarts折线图的鼠标移动上去小点显示样式修改tooltip:{trigger:'axis',formatter:function{varr...

H3C 12508 收集诊断信息

案例:H3C12508单板卡出现remove状态,需要配合研发收集诊断信息。)总体:12500交换机返回三种文件----故障时诊断信息,主备单板的日志文件,主备单板的诊断日志操作步骤:一、故障时诊断信息:disdiagnostic-informationdiag收集必须在问题出现的时候,单板重起之前执行。在save时请选择Y保存到CF卡方式。一般情况下,此命...

GeoServer基础教程(一):环境搭建篇

到目前为止,GeoServer环境已经建立,下面的博客文章将继续让您熟悉GeoServer的界面和基本功能。...

matlab从曲线图提取数据

对于第二条曲线,add_len需要改小,欧式距离的阈值需要改大。...

vue.js(3)

vue中有两种类型的组件:默认组件[全局组件]和单文件组件5.1.1默认组件vue。组成部分varvm=newVue6.Vue自动化工具需要提前安装和准备一些组件开发工具,以便在了解常见组件后继续学习单文件组件。因此,我们需要首先在系统中构建vue CLI工具。官方网站:https://cli.vuejs.org/zh/VueCLI需要Node.js8.9或...

PLSQL 美化规则文件详解

开始---①createtablestudent;结束;--② 美化效果是:开始——① CREATETABLESTUDENT;结束;--②...