美文网首页
生产权限设计

生产权限设计

作者: 放开那个BUG | 来源:发表于2022-01-12 19:45 被阅读0次

1、前言

通常我们说权限设计,都会立马想到:用户-角色-权限模型,虽然这个看起来很清晰,但是往往在权限这块没法操作,因为没法细分。 我理解的权限分为菜单权限和数据权限。菜单权限就是上面的模型中的权限,而数据权限其实是直接跟用户绑定的。那么怎么设计一个 用户-角色-权限模型呢?

2、设计

我们需要这几个表,user、role、permission(或者也可以叫 menu,因为实际上这个是菜单权限),然后他们的连接表 user_role,role_permisson。user、role 比较简单,重点说 permission。

permission 分为两种,一种是 menu、button 两种,menu 表示一级菜单,二级菜单等,button 表示按钮。至于接口上的权限怎么弄,就是先抽象化成一个权限,比如商品插入:goods_add,在权限表插入这条数据。那么在代码中可以定义一个注解,注解上标识了 goods_add 权限,如图:


权限设计

然后在拦截器中判断一下,如果这个接口需要校验,那么查出这个用户所有的权限,再对比下有没有这个接口的权限,没有则拦截;有则放行。

那么数据表是怎样的呢?

主要字段是 id、code、name、parentId 和 type。id 和 parentId 主要组成一棵树,code 标识权限如:goods_add,name 标识相应的按钮名称还是菜单名称,type 表示是 menu 和 button。一个基本的数据是:

Id Code Name parentId type
1 Home 首页 -1 menu
2 goods 我的商品 1 menu
3 goods_add 新增商品 2 button
4 goods_edit 修改商品 2 button

那么这上面的数据,在返回给前端时,就可以组成一个树返回,用户就可以在角色页面编辑这个角色所拥有的菜单权限是哪些。

保存时,传入勾选的哪些权限,permission 与 role 通过 role-permission 连接,只需要传入角色 id 以及对应的权限 id 即可,就知道哪些权限被勾选了。在查询的时候,除了所有的权限树之外,还会把所勾选的权限数据返回,让前端去渲染勾选的树。(这东西后端可以合成一步)

3、结论

我看到一个详细版本的,跟我的思路设计是一样的:http://www.justdojava.com/2020/06/30/springboot-menu-auth/

相关文章

  • 生产权限设计

    1、前言 通常我们说权限设计,都会立马想到:用户-角色-权限模型,虽然这个看起来很清晰,但是往往在权限这块没法操作...

  • 数据库 权限设计

    数据库 权限设计 -系统权限管理设计-通用权限管理设计 之 数据库结构设计 权限 用户 角色 组 用户表

  • JavaWeb权限设计原理

    每个系统都有权限设计,本篇主要将初始的权限设计的原理,不依赖任何框架,以直观的角度剖析web的权限设计。 权限设计...

  • 权限系统设计方案

    1权限模型 1.1 权限设计 从业务分类上来讲权限可以分为数据查看权限,数据修改权限等,对应到系统设计中有页面权限...

  • 2、用户权限管理,数据库表设计

    一、权限设计 网上资料说权限设计 = 功能权限 + 数据权限,我认为还是很有道理的。之前项目中只涉及到功能权限,没...

  • 权限设计合集

    1.《数据权限设计思路_权限设计数据权限》摘要:方案一:按照岗位体系建立数据权限方案二:针对角色设置数据权限方案三...

  • 产品 | 权限设计=功能权限+数据权限

    权限设计=功能权限+数据权限 权限管理 Authority Management 目前主要是通过用户、角色、资源三...

  • Linux权限控制

    开发阶段请给予项目全部的777权限。 生产环境首先全部设置为655权限,runtime目录设置为755权限publ...

  • 模型设计

    一、模型整体设计 二、模型说明 该设计参考现在比较通用的权限管理设计模式,权限管理模型包括 2.1 用户表 ...

  • 权限设计(下) - 细说权限设计

    什么是权限管理一般来说,只要有用户参与的系统,那么都要有权限管理,尤其是一些后台的管理系统,权限管理可以实现对用户...

网友评论

      本文标题:生产权限设计

      本文链接:https://www.haomeiwen.com/subject/pdxgcrtx.html