首页 > 其他分享 >聊聊Web项目中的权限设计

聊聊Web项目中的权限设计

时间:2022-12-03 21:44:44浏览次数:39  
标签:Web 菜单 角色 用户 聊聊 某个 权限 对应

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

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

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

聊权限系统的设计思路。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

标签:Web,菜单,角色,用户,聊聊,某个,权限,对应
From: https://www.cnblogs.com/yilangcode/p/16948832.html

相关文章

  • web相关概念回顾和web服务器软件_概述
    web相关概念回顾:1.软件架构:1.C/S:客户端/服务器端2.B/S:浏览器/服务器2.资源分类1.静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源,静态资源可以直接被......
  • H3C5.5模拟器轻松WEB配无线
    H3C5.5模拟器轻松WEB配无线本地虚拟网卡地址设置AC端配置:[AC]iphttpenable[AC]iphttpsenable#开启httphttps服务[AC]vlan100[AC-vlan100]qu[AC]intvlan100[AC-Vl......
  • webpack
    目录简介解密方式简介!function(allModule){functionuseModule(whichModule){allModule[whichModule].call(null,"helloworld!");}useMod......
  • SpringCloud Alibaba(七) - JWT(JSON Web Token)
    原文链接:JWT详解:https://blog.csdn.net/weixin_45070175/article/details/1185592721、什么是JWT通俗地说,JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串......
  • 《CTFshow - Web入门》04. Web 31~40
    目录web31知识点题解web32知识点题解web33知识点题解web34知识点题解web35知识点题解web36知识点题解web37知识点题解web38知识点题解web39知识点题解web40知识点题解web......
  • 配置Gitlab Webook触发Jenkins流水线
    ......
  • PythonWeb开发:90分钟用Flask搭建博客
    来自https://www.bilibili.com/video/BV1gh411q7xo?p=2&vd_source=54aa98683b2f8392aec4499961f896ce1.环境准备1.1搭建虚拟环境在项目文件夹下打开控制台,输入pytho......
  • simpread-WebSocket 教程
    WebSocket是一种网络通信协议,很多高级功能都需要它。WebSocket是一种网络通信协议,很多高级功能都需要它。本文介绍WebSocket协议的使用方法。一、为什么需要Web......
  • docker入门(利用docker部署web应用)
    第一章什么是docker1.1docker的发展史2010年几个年轻人成立了一个做PAAS平台的公司dotCloud.起初公司发展的不错,不但拿到过一些融资,还获得了美国著名孵化器YCombinator......
  • Linux(五)用户管理与文件权限
    1常用的基本命令Shell可以看作一个命令解释器,为我们提供一个交互式的文本控制台界面,可以通过终端控制台来输入命令,由shell进行解释并最终交给linux内核运行。可以看作用......