ruoyi-vue-pro框架通过permission组件自定义权限规则(策略)

第一种方式:自定义数据权限规则
步骤一:权限控制接口

public interface DataPermissionRule {
1./**
 * 返回需要生效的表名数组
 * 为什么需要该方法?Data Permission 数组基于 SQL 重写,通过 Where 返回只有权限的数据
 *
 * 如果需要基于实体名获得表名,可调用 {@link TableInfoHelper#getTableInfo(Class)} 获得
 *
 * @return 表名数组
 */
Set<String> getTableNames();

/**
 * 根据表名和别名,生成对应的 WHERE / OR 过滤条件
 *
 * @param tableName 表名
 * @param tableAlias 别名,可能为空
 * @return 过滤条件 Expression 表达式
 */
Expression getExpression(String tableName, Alias tableAlias);
}

步骤二:实现权限控制接口

2.
@Component // 声明为 Spring Bean,保证被 yudao-spring-boot-starter-biz-data-permission 组件扫描到
public class DemoDataPermissionRule implements DataPermissionRule {
@Override
public Set<String> getTableNames() {
    return Sets.newHashSet("system_dict_type", "system_post");
}
@Override
public Expression getExpression(String tableName, Alias tableAlias) {
    Long userId = SecurityFrameworkUtils.getLoginUserId();
    assert userId != null;
    switch (tableName) {
        case "system_dict_type":
        // 处理权限逻辑根据业务需求进行更改
            return new EqualsTo(MyBatisUtils.buildColumn(tableName, tableAlias, "creator"), new LongValue(userId));
        case "system_post":
         // 处理权限逻辑根据业务需求进行更改
         // dept 基于部门的数据权限
        rule.addDeptColumn(AdminUserDO.class); // WHERE dept_id = ?
            return new EqualsTo(MyBatisUtils.buildColumn(tableName, tableAlias, "updater"), new LongValue(userId));
        default: return null;
    }
}
}

第二种方式:每个 Maven Module, 通过自定义 DeptDataPermissionRuleCustomizer (opens new window) Bean,配置哪些表的哪些字段,进行数据权限的过滤。

@Configuration(proxyBeanMethods = false)
public class DataPermissionConfiguration {
@Bean
public DeptDataPermissionRuleCustomizer sysDeptDataPermissionRuleCustomizer() {
 // 第一种业务逻辑权限控制选择:
    return rule -> {
        // dept 基于部门的数据权限
        rule.addDeptColumn(AdminUserDO.class); // WHERE dept_id = ?
        rule.addDeptColumn(DeptDO.class, "id"); // WHERE id = ?
        
        // user 基于用户的数据权限
        rule.addUserColumn(AdminUserDO.class, "id"); // WHERE id = ?
// rule.addUserColumn(OrderDO.class); // WHERE user_id = ?
};
// 第二种业务逻辑控制选择(需要根据具体业务需求进行修改逻辑代码):
return rule -> {
            String tableName = "";
            switch (tableName){
                case "dept_id":
                    // dept 基于部门的数据权限
                    rule.addDeptColumn(AdminUserDO.class); // WHERE dept_id = ?
                    break;
                case "user_id":
//                    rule.addDeptColumn(DeptDO.class, "id"); // WHERE id = ?
                    // user 基于用户的数据权限
                    rule.addUserColumn(AdminUserDO.class, "id"); // WHERE id = ?
                    break;
            }
        };
}
}

@DataPermission 注解
@DataPermission (opens new window) 数据权限注解,可声明在类或者方法上,配置使用的数据权限规则。
① enable 属性:当前类或方法是否开启数据权限,默认是 true 开启状态,可设置 false 禁用状态。
@GetMapping(“/get”)
@ApiOperation(“获得登录用户信息”)
@DataPermission(enable = false) // 关闭数据权限,避免只查看自己时,查询不到部门。
public CommonResult profile() {
// … 省略代码
if (user.getDeptId() != null) {
DeptDO dept = deptService.getDept(user.getDeptId());
resp.setDept(UserConvert.INSTANCE.convert02(dept));
}
// … 省略代码
}
② includeRules 属性,配置生效的 DataPermissionRule (opens new window) 数据权限规则。例如说,项目里有 10 种 DataPermissionRule 规则,某个方法只想其中的 1 种生效,则可以使用该属性。

③ excludeRules 属性,配置排除的 DataPermissionRule (opens new window) 数据权限规则。例如说,项目里有 10 种 DataPermissionRule 规则,某个方法不想其中的 1 种生效,则可以使用该属性。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Ruoyi-vue-pro是一款便捷的前端Java框架,其官方开发指南PDF可在官网或相关技术博客上进行下载。 该开发指南PDF主要介绍了Ruoyi-vue-pro框架结构、设计规范、使用方法等内容,为开发人员提供了全面的参考资料。在其中可以学习到如何使用IDE工具进行项目开发、如何对接后端API接口、如何进行代码打包和发布、如何进行项目调试等技巧。 此外,该开发指南PDF还提供了大量代码示例,方便开发人员更好地理解和掌握框架使用。同时,对于想要深度定制Ruoyi-vue-pro框架的开发者,该开发指南PDF也提供了一些扩展和集成方案,方便自定义组件和功能的实现。 总之,Ruoyi-vue-pro开发指南PDF是一份十分实用和详尽的前端框架开发指南,对于想要使用该框架开发项目的开发者来说是不可多得的学习资料。建议各位开发者在开始使用Ruoyi-vue-pro前,先进行该指南的学习,以便更好地开展项目工作。 ### 回答2: ruoyi-vue-pro 是一个开源的后台管理系统,采用前后端分离的开发架构,前端采用 Vue.js 框架开发,后台采用 SpringBoot 框架开发。ruoyi-vue-pro 开发指南 pdf 是一份详细的开发文档,其中包括了系统的功能介绍、搭建环境、项目结构、模块设计等内容。 在功能介绍中,文档详细介绍了系统的模块功能,包括登录管理、角色权限管理、用户管理、菜单管理、数据字典管理等。在搭建环境中,文档给出了详细的开发环境配置步骤,包括安装数据库、安装 Java JDK 等内容。在项目结构中,文档介绍了整个项目的文件结构,包括前后端代码的目录结构和各个文件的作用。 在模块设计中,文档详细说明了各个模块的设计思路、实现方式和交互流程。其中,登录管理模块通过 JWT 鉴权实现用户登录,角色权限管理模块通过 Shiro 实现用户权限控制,数据字典管理模块通过缓存技术实现字典数据的高效查询。文档还提供了详细的代码示例和开发注意事项,方便开发者自行开发新的模块。 总之,ruoyi-vue-pro 开发指南 pdf 是一份非常详细的开发文档,无论是已经使用过该系统的开发者,还是新手开发者都能够轻松地了解系统的架构特点和开发流程,快速上手进行开发工作。 ### 回答3: ruoyi-vue-pro 开发指南 pdf 是一本非常实用的指南手册,旨在帮助开发人员更好地理解和利用该开源项目。该指南详细介绍了 ruoyi-vue-pro 项目的核心功能和特点,以及如何在项目中运用这些功能来开发高效、易用的应用程序。 指南从项目的搭建和配置开始,包括项目依赖的环境、安装和配置开发工具的步骤,以及如何在项目中添加新的组件和插件等。接着,指南详细介绍了项目的各种功能和构架,包括如何使用路由、Vuex、Mock等功能来实现应用程序的交互和通信。 该指南在介绍每个功能和构架时,都提供了大量的代码示例和实用的技巧,使开发人员可以更加深入地了解和学习该项目的全部功能。此外,该指南还提供了一些常见问题的解答和调试技巧,帮助开发人员更加科学和高效地开发ruoyi-vue-pro项目。 总之,ruoyi-vue-pro 开发指南 pdf 是一本非常实用和详细的指南手册,对于希望学习和开发ruoyi-vue-pro项目的开发人员来说,是一本不可或缺的工具书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值