一般的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. api接口调用

    api接口调用 CURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 CURL 库.使用PHP的CURL 库可以简单和有效 ...

  2. 【奶奶看了都会】ChatGPT3.5接入企业微信,可连续对话

    1.连续对话效果 小伙伴们,这周ChatGPT放出大招,开放了GPT3.5的API.说简单点,就是提供了和ChatGPT页面对话一样模型的接口.而之前接的ChatGPT接口都是3.0,并不是真正的Ch ...

  3. Mac 和 windows上 好用的截图 工具 Snipaste

    Snipaste 官网:https://zh.snipaste.com/ ========================= 使用方法,比较简单,可以官网查看

  4. C 语言常用头文件解释

    C系统提供了丰富的系统文件,称为库文件,整理一下以后好实用: <stdio.h> 定义了三个变量类型.一些宏和各种函数来执行输入和输出 https://www.runoob.com/cpr ...

  5. linux 测试网络速率

    1. ethtool ethtool是很强大的查询网卡(嵌入式称为phy芯片)配置的工具,几乎phy芯片芯片手册寄存器能配置的选项,ethtool都能查询到:嵌入式调试phy芯片的时候经常用到该命令: ...

  6. 【Unity3D】VideoPlayer组件

    1 简介 ​ AudioSource组件中介绍了音频的播放,本文将介绍基于 VideoPlayer 组件实现视频播放. ​ VideoPlayer 属性面板如下: Source:视频源类型,有 2 种 ...

  7. 按奇偶排序数组II

    按奇偶排序数组II 给定一个非负整数数组A,A中一半整数是奇数,一半整数是偶数. 对数组进行排序,以便当A[i]为奇数时,i也是奇数:当A[i]为偶数时,i也是偶数. 你可以返回任何满足上述条件的数组 ...

  8. eslint+prettier 统一代码风格

    1.实现效果 Eslint校验代码语法,prettier统一格式化代码,按下保存自动修复eslint错误,自动格式化代码. 2.安装vscode插件 Vetur ESLint Prettier - C ...

  9. 使用 Visual Studio 断点调试 DLL

    继上文说到使用 IDA 和 WinDbg 调试无 dmp 文件  那么在有源码的情况下可以直接断点调试 DLL,目的是查看 DLL 内部的函数调用 场景: 程序执行到某个 DLL 时突然崩溃,先确定 ...

  10. [BUUCTF][Web][极客大挑战 2019]LoveSQL 1

    打开靶机url,页面显示有两个输入框,框中输入123',发现两个框都有sql注入问题 爆出一下错误 You have an error in your SQL syntax; check the ma ...