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


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

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

        用户、角色、权限表

      权限主要分为三个步骤:

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

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

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

            登录权限:比如登录

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

          

  • 相关阅读:
    MyEclipse 2015 SVN 安装
    PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法
    Oracle密码过期the password has expired
    解决telnet无法连接 Connection refused
    提示-bash: telnet: command not found的解决方法
    ORACLE WITH AS 用法
    Oracle创建Database Link
    oracle操作字符串:拼接、替换、截取、查找、长度、判断
    Java Web 清除缓存
    mount 命令用法
  • 原文地址:https://www.cnblogs.com/quchengfeng/p/4166897.html
Copyright © 2020-2023  润新知