项目开发中关于权限的实现方案简单描述

发布于:2022-07-26 ⋅ 阅读:(305) ⋅ 点赞:(0)

简单谈谈关于权限的实现

 权限主要分为以下三个类:用户、角色、权限表

 权限主要分为三个步骤:

   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中配置下就好了。

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

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

   登录权限:比如登录

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


网站公告

今日签到

点亮在社区的每一天
去签到