一:url权限:  最底层的权限控制,,缺点在与没有预判的机制,造成客户体验下降.

             前提: 为controller中的每一个方法(即资源)定义一个资源(Resource)名称,,该资源名称对应一个权限(Permission),两者为一对一的关系.

      权限的表与表的关联关系分析: 而每一个Permission由分别可以对应多个Role(角色),即Role与Permission为多对多的关系.

                    再进一步,为每一个系统的用户分配多个Role,即Role与User之间为为多对多的关系.

      权限拦截过程分析:在权限拦截的拦截器中,在登录验证之后,在对当前要访问的资源进行验证,如果当前访问的资源不在权限验证列表中,则直接放行不进行验证了.

               反之,如果当前访问的资源在权限列表中,则需要对当前要访问的资源进行权限验证.首先,获取用户的所有权限,对其进行遍历,并与当前要访问的资源进行

               比对,如果相等则放行,否则重定向到没有权限的json数据源.

二:模块按钮权限:  第二级权限控制,增强用户体验.

      权限拦截过程分析:在某些功能按钮上增加预判的功能,在list的jsp页面上使用jtsl的c标签从作用域中获取用户的相关权限信息, 并与当前功能所对应的权限名称比较,如果用户包含当前功能按钮所需的权限,则显示该按钮,否则隐藏该按钮.

三:系统菜单权限:  第三级权限控制,对不同权限的用户显示不同的系统菜单选项.

      权限拦截过程分析:为每一个需要权限的菜单定义一个权限名称,该名称为定位到该菜单功能页面的方法,即/list资源对应的方法,

                这样,在用户登录后,遍历所有的菜单选项,查询出需要权限验证的菜单项,以及其对应的全乡名称,然后逐个与用户的权限列表比对,如果包含则ok,如果

                用户权限列表中不包括该菜单的权限,则将该菜单项对象从当前的菜单项集合中移除,从而在前台页面不再显示,最终达到为不同权限的用户显示不同

                的系统菜单列表的功能.

  

crm---本项目的权限控制模式的更多相关文章

  1. ThinkPHP框架下基于RBAC的权限控制模式详解

    这几天因为要做一个项目,需要可以对Web应用中通用功能进行封装,其中一个很重要的涉及到了对用户.角色和权限部分的灵活管理.所以基于TP框架自己封装了一个对操作权限和菜单权限进行灵活配置的可控制模式. ...

  2. Jenkins进阶系列之——13修改Jenkins权限控制

    说明:本方法适用于安全矩阵和项目矩阵授权策略的Jenkins. 很多童鞋在使用jenkins的时候忘记配置权限或者权限配置错误,然后各种蛋疼.最近闲着无事,折腾了下.好了,闲话少扯. Jenkins的 ...

  3. ACL 权限控制机制 ?

    UGO(User/Group/Others) 目前在 Linux/Unix 文件系统中使用,也是使用最广泛的权限控制方式.是一种粗 粒度的文件系统权限控制模式. ACL(Access Control ...

  4. ACL 权限控制机制 ?

    UGO(User/Group/Others) 目前在 Linux/Unix 文件系统中使用,也是使用最广泛的权限控制方式.是一种粗 粒度的文件系统权限控制模式. ACL(Access Control ...

  5. ACL 权限控制机制?

    UGO(User/Group/Others) 目前在 Linux/Unix 文件系统中使用,也是使用最广泛的权限控制方式.是一种粗 粒度的文件系统权限控制模式. ACL(Access Control ...

  6. python 全栈开发,Day107(CRM初始,权限组件之权限控制,权限系统表设计)

    一.CRM初始 CRM,客户关系管理系统(Customer Relationship Management).企业用CRM技术来管理与客户之间的关系,以求提升企业成功的管理方式,其目的是协助企业管理销 ...

  7. CRM【第一篇】: 权限组件之权限控制

    1. 问:为什么程序需要权限控制? 答:生活中的权限限制,① 看灾难片电影<2012>中富人和权贵有权登上诺亚方舟,穷苦老百姓只有等着灾难的来临:② 屌丝们,有没有想过为什么那些长得漂亮身 ...

  8. gin-jwt对API进行权限控制

    前言 之前文章简单介绍了如何运行gin+vue的前后端分离开源项目,该项目是学习了Gin实践教程后结合vue-element-admin写的,该教程讲得很详细,适合入门Gin.本篇文章将介绍gin+v ...

  9. linux pam 控制模式

    工作类别(type).流程栈(stack)和控制模式(control) Linux-PAM 工作的"类别"(type) PAM 的具体工作主要有以下四种类别(type):accou ...

随机推荐

  1. [CSP-S模拟测试]:小Y的图(最小生成树+LCA)

    题目传送门(内部题131) 输入格式 第一行三个整数$n$.$m$和$Q$. 接下来$m$行每行三个整数$x$.$y$.$z$($1\leqslant x,y\leqslant n,1\leqslan ...

  2. 关于Jdk7与Jdk8对Collections进行分组的区别

    先准备一点数据: public class User {    private Integer id;    private String type;    private String name;  ...

  3. vmx转换ofv模板,导入esxi

    使用VMware Workstation安装目录下\OVFTool文件的ovftool.exe工具: 转换示例: 首先进入OVFTool根目录.然后执行 ovftool.exe "D:\ce ...

  4. configprase模块,配置文件模块

    import configparser # config = configparser.ConfigParser() # config["DEFAULT"] = {'Port':3 ...

  5. Retrofitting Analysis

    Retrofitting Analysis To figure out the process of retrofitting[1] objective updating, we do the fol ...

  6. 代码实现:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n

    import java.util.Scanner; //编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n public ...

  7. Dart 基本语法

    ?? // 如果b为null则赋值,否则保持原样 b ??= value; 级联符号.. querySelector('#confirm') // Get an object. ..text = 'C ...

  8. iOS 图表工具charts介绍

    charts是一个很好的绘图工具,功能非常强大,可以用来绘制折线,柱状图,饼状图,k线图,k线分时图,雷达图,气泡图等等,charts是一款仿照安卓 MPAndroidChart而来的一个基于swif ...

  9. Selenium 2自动化测试实战18(上传文件)

    一.上传文件 上传文件是比较常见的web功能之一,但WebDriver没有提供专门用于上传的方法. 一般web页面的上传功能的操作需要单击“上传”按钮后打开本地的Window窗口,从窗口选择本地文件进 ...

  10. nmon(linux监视)

    nmon –f –t –r test –s 10 –c 60 即为10分钟 上面命令的含义是:-f :按标准格式输出文件名称:<hostname>_YYYYMMDD_HHMM.nmon-t ...