专业的JAVA编程教程与资源

网站首页 > java教程 正文

权限系统一次性说清楚,有了它,再也不担心角色权限设计了

temp10 2025-03-02 19:02:55 java教程 10 ℃ 0 评论

#文章首发挑战赛#

背景

一个同事最近在做一个权限系统的需求:后台用户拥有多个角色,一个角色拥有多个模块下的功能权限和数据权限。

权限系统一次性说清楚,有了它,再也不担心角色权限设计了

订单

功能权限

查看订单 (是否有权限)

修改订单 (是否有权限)

发货 (是否有权限)

数据权限

查询范围: 1个月内 1周内 今日

是否显示手机号 0 不显示 1 显示

指定城市: 所有城市,上海市 北京市 深圳市 等

数据加密: 0 是 1 否


科普

权限本质是保护资源,控制始终围绕 菜单 操作 数据 来展开,本文我们统称为资源,只是类型不同而已。

功能权限和数据权限的区别在于,功能权限判断有没有某权限,数据权限是判断有多少权限。

功能权限对资源的安全判断只有YES和NO两种结果(相对简单),而资源权限所要求的是,在同一个数据请求中,根据不同的权限范围返回不同的数据集

数据权限和业务有很强的关联,复杂度和难度相对较大。

通用的表结构

1 用户表

2 角色表

3 角色权限表

4 资源表


实现

Mybatis 递归查询

更高效的构建树方法(推荐):


Java 端代码

1 功能权限处理,通过拦截器(或者过滤器等)实现

2 数据权限,通过Mybatis 拦截,动态拼接SQL


总结

所有的权限都是围绕功能和数据展开,通过以上实例,基本可以概括所有的权限处理,如果大家有更好的方案,欢迎进行探讨。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表