一般的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. Spring WebSocket实现实时通信的详细教程

    简介 WebSocket 是基于TCP/IP协议,独立于HTTP协议的通信协议.WebSocket 连接允许客户端和服务器之间的全双工通信,以便任何一方都可以通过已建立的连接将数据推送到另一方. 我们 ...

  2. 解决问题:latex中bib引用顺序不正确,引用顺序和正文不一致

    问题:生成pdf时文献应用会乱序 引用bib格式的参考文献时,会这么写: \bibliographystyle{plain} \bibliography{%filename%.bib} 而plain的 ...

  3. 2.8 PE结构:资源表详细解析

    在Windows PE中,资源是指可执行文件中存放的一些固定不变的数据集合,例如图标.对话框.字符串.位图.版本信息等.PE文件中每个资源都会被分配对应的唯一资源ID,以便在运行时能够方便地查找和调用 ...

  4. 通过URL载入ShellCode代码

    将生成的shellcode放到web服务器上,本地不保存恶意代码,本地只负责加载到内存运行,这样可以很好的躲过查杀. 生成shellcode msfvenom -a x86 --platform Wi ...

  5. LyScript 通过PEB结构解析堆基址

    LyScript中默认并没有提供获取进程堆基址的函数,不过却提供了获取PEB/TEB的函数,以PEB获取为例,可以调用dbg.get_peb_address(local_pid)用户传入当前进程的PI ...

  6. 鸿蒙开发游戏(三)---大鱼吃小鱼(放置NPC)

    效果图 添加了一个NPC(小红鱼),玩家控制小黄鱼 鸿蒙开发游戏(一)---大鱼吃小鱼(界面部署) 鸿蒙开发游戏(二)---大鱼吃小鱼(摇杆控制) 鸿蒙开发游戏(三)---大鱼吃小鱼(放置NPC) 鸿 ...

  7. Base64编码的优点与缺点

    Base64编码是一种将二进制数据转换为可打印ASCII字符的编码方式.它被广泛应用于数据传输和存储,以提升数据的可读性.可传输性和安全性. Base64编码解码 | 一个覆盖广泛主题工具的高效在线平 ...

  8. Linux(Centos7)升级MySQL 5.7到8.0.31

    一.下载MySQL安装包 下载地址:https://downloads.mysql.com/archives/community/ 二.备份 mkdir /home/mysqlback mysqldu ...

  9. NC18985 数字权重

    题目链接 题目 题目描述 小a有一个n位的数字,但是它忘了各个位上的数是什么,现在请你来确定各个位上的数字,满足以下条件: 设第i位的数为ai,其中a1为最高位,an为最低位,K为给定的数字 不含前导 ...

  10. Centos7 和 Centos8 升级内核

    从yum安装kernel-ml 对于Centos7 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org yum install htt ...