一: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. jsp里面include的静态导入和动态导入的区别

    静态导入就是将被导入页面完全融入到导入的页面中:而动态导入只是在servlet里面插入了include方法,导入的这是被导入页面的body标签里面的内容 1.什么是静态导入? 静态导入指的是,将一个外 ...

  2. Kotlin的高阶函数和常用高阶函数

    Kotlin的高阶函数和常用高阶函数 文章来源:企鹅号 - Android先生 高阶函数的定义 将函数当做参数或者是返回值的函数 什么是高阶函数 可以看看我们常用的 函数: 首先我们可以知道, 是 的 ...

  3. js创建对象的6种方式总结

    1.new 操作符 + Object 创建对象 var person = new Object(); person.name = "lisi"; person.age = 21; ...

  4. 2018-2019-2 20175215 实验一《Java开发环境的熟悉》实验报告

    一.实验内容及步骤 1.使用JDK编译.运行简单的Java程序 cd code进入code文件夹 mkdir 20175215exp1创建20175215exp1文件夹 ls查看当前目录 cd 201 ...

  5. Eclipse中文插件安装教程

    先运行英文版Eclipse 点击Help选择Install New Software 直接点击Add按钮 Name输入: Babel Location输入: http://download.eclip ...

  6. Gson解析list类型的json串

    Gson gson = new Gson(); Type type = new TypeToken<List<Object>>() {}.getType(); List< ...

  7. PLSQL查看表创建语句

    在我们想要查看的表上右键选择view:

  8. web.py下获取get参数

    比较简单,就直接上代码了: import web urls = ( '/', 'hello' ) app = web.application(urls, globals()) class hello: ...

  9. 三十四:数据库之SQLAlchemy外建及四种约束

    使用SQLAlchemy创建外建,只需要在子表的字段中指定此字段的外建是哪个表的哪个字段即可,字段类型需和父表下该字段的类型保持一致 使用ondelete指定约束, 外建约束有以下几种:1.RESTR ...

  10. 【HTML5】---【HTML5提供的一些新的标签用法以及和HTML 4的区别】

    HTML 5 是一个新的网络标准,目标在于取代现有的 HTML 4.01, XHTML 1.0 and DOM Level 2 HTML 标准.它希望能够减少浏览器对于需要插件的丰富性网络应用服务(p ...