一般的Web项目中都少不了登录这个环节,登录之后就需要跳转到首页,并且根据

当前用户的信息,获取到对应的菜单信息,可以操作的方法信息等等。这个只是针对于

操作权限,至于数据权限处理起来会更加复杂一些。自己从以往开发过的项目中,来聊

聊权限系统的设计思路。

  软件开发中已经大量使用的,稳定的权限设计思路就是,给用户授予某个角色,然后

找到这个角色所拥有的权限,就是这个角色所对应的用户的权限。简单的几张表就可以

实现这个功能,用户表,角色表,权限资源表,用户角色表(一对多),角色权限表(多对多)。

使用这几张表就可以完成系统的权限设计,一个用户可以有多个角色,一个角色可以对应

多个资源。权限资源表中又可以分为多种权限资源,比如菜单资源,比如曾、删、改、查的

按钮资源。用户是否有权限查看某个菜单,用户是否有权限操作某个按钮对应的方法,都被

严格控制。权限已经控制到方法级别,粒度已经很小而且很实用。

  介绍完上面的权限设计思路之后,在来聊一聊具体的实现方式。首先可以使用注解的方式

去给每一个方法添加操作权限比如说给A方法添加权限A。然后前端页面登录之后,拿到当前

用户对应的所有权限资源,对每一个菜单和每一个按钮都添加了对应的权限编码,用户登录

系统之后,有这个权限编码则显示某一个菜单或者是某个操作方法,没有就不显示。这在页面

中就已经过滤掉许多可能越权的操作,如果是碰到懂行的人,那就需要使用第二种方式来进行

鉴权操作。既然给某个用户授权可以登录某一个系统,那么首先用户信息肯定是存在于系统当

中的。如果系统中不存在当前操作的某个用户信息,那一定就是没有权限去做这个操作。后端

的处理方式为,使用一个AOP切面来进行统一处理,拦截所有controller方法中有权限注解的

方法。会先根据用户的唯一信息从缓存当中获取当前用户对应的所有权限,然后判断所有权限中

是否存在权限A,存在则放行。不存在则直接返回或者是抛出异常信息,中断程序的执行。

  至此从权限设计到具体的实现思路都已经写明, 自己之前开发过的项目中很多系统都是使用

这种方式来设计的,简单实用。有其他建议的小伙伴欢迎留言讨论。

聊聊Web项目中的权限设计的更多相关文章

  1. 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

    在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...

  2. 转 web项目中的web.xml元素解析

    转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45)   阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...

  3. 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能

    在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先 ...

  4. 前后端分离Web项目中,RBAC实现的研究

    在前后端分离Web项目中,RBAC实现的研究   最近手头公司的网站项目终于渐渐走出混沌,走上正轨,任务也轻松了一些,终于有时间整理和总结一下之前做的东西. 以往的项目一般使用模板引擎(如ejs)渲染 ...

  5. 真分布式SolrCloud+Zookeeper+tomcat搭建、索引Mysql数据库、IK中文分词器配置以及web项目中solr的应用(1)

    版权声明:本文为博主原创文章,转载请注明本文地址.http://www.cnblogs.com/o0Iris0o/p/5813856.html 内容介绍: 真分布式SolrCloud+Zookeepe ...

  6. php课程 1-3 web项目中php、html、js代码的执行顺序是怎样的(详解)

    php课程 1-3 web项目中php.html.js代码的执行顺序是怎样的(详解) 一.总结 一句话总结:b/s结构 总是先执行服务器端的先.js是客户端脚本 ,是最后执行的.所以肯定是php先执行 ...

  7. Web项目中使用Log4net 案例

    简介: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题. 经验表明,日 ...

  8. 在web项目中使用shiro(认证、授权)

    一.在web项目中实现认证 第一步,在web项目中导入shiro依赖的包 第二步,在web.xml中声明shiro拦截权限的过滤器 <filter> <filter-name> ...

  9. JAVA WEB项目中各种路径的获取

    JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报  分类: JAVA开发(41)  1.可以在s ...

  10. Web 项目中分享到微博、QQ空间等分享功能

    Web 项目中分享到微博.QQ空间等分享功能 网上有很多的模板以及代码,但是有很多都不能分享内容,简单的测试了下: 以新浪微博为例,文本框中的内容是title属性,下面的链接是url属性,如果你的链接 ...

随机推荐

  1. ChatGenTitle:使用百万arXiv论文信息在LLaMA模型上进行微调的论文题目生成模型

    ChatGenTitle:使用百万arXiv论文信息在LLaMA模型上进行微调的论文题目生成模型 相关信息 1.训练数据集在Cornell-University/arxiv,可以直接使用: 2.正式发 ...

  2. C++ Qt开发:TableWidget表格组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TableWi ...

  3. 8.4 ProcessHeap

    ProcessHeap 是Windows进程的默认堆,每个进程都有一个默认的堆,用于在进程地址空间中分配内存空间.默认情况下ProcessHeap由内核进行初始化,该堆中存在一个未公开的属性,它被设置 ...

  4. Spring一套全通6—注解编程

    百知教育 --- Spring系列课程 --- 注解编程 第一章.注解基础概念 1. 什么是注解编程 指的是在类或者方法上加入特定的注解(@XXX),完成特定功能的开发. @Component pub ...

  5. 守护进程(Python)

    #__author__:Kelvin #date:2020/5/10 11:37 import time from multiprocessing import Process def son1(): ...

  6. 华硕ROG Zenith Extreme Alpha主板评测:主板界的航空母舰

    在AMD推第一代锐龙线程撕裂者的时期,华硕ROG Zenith Extreme主板凭借给力的用料,各种便利的超频设计,出色的SupermeFX音效还有万兆网卡赢得了不少用户的好评.现在AMD推出了第二 ...

  7. CF1907

    A 模拟. B 模拟. C 若原字符串中出现次数最多的次数为 \(cnt\),答案是 \(\max(n\%2,cnt\times 2-n)\). D 二分 \(k\),然后从后往前倒,计算出到达每个线 ...

  8. lombok-ex 编译时注解框架,性能完爆 AOP

    lombok-ex lombok-ex 是一款类似于 lombok 的编译时注解框架. 主要补充一些 lombok 没有实现,且自己会用到的常见工具. 编译时注解性能无任何损失,一个注解搞定一切,无三 ...

  9. 【Unity3D】分离路面导航

    1 前言 ​ 导航系统中介绍了导航的基本用法,但是不能解决分离路面导航问题.如下图,胶囊体需要导航到立方体位置,但是路面不连续,烘焙(Bake)导航网格后,断开处也没有导航网格,因此,胶囊体导航到分离 ...

  10. 【Unity3D】UGUI之Button

    1 Button属性面板 ​ 在 Hierarchy 窗口右键,选择 UI 列表里的 Button 控件,即可创建 Button 控件,选中创建的 Button 控件,按键盘[T]键,可以调整 But ...