全栈低码设计开源框架 json-script-rule 权限控制

权限

说明

从4.0版本开始,框架引入了权限的概念,其权限优先级由强至弱如下

  • 插件禁用:在"application"中配置禁用的插件优先级最高,禁用的插件将绝对不可用,除非插件重写check方法
  • 插件权限:通过实现IJSRuleRoleAuthority接口来配置角色和插件之间的关系,此外还可以通过在自定义action对象中使用@JSRuleModelPermit注解来给角色添加插件的权限,此外该注解还可以标注在插件class上,同时出现时将优先采用action对象中的注解属性。重写isOwner方法将会导致插件权限失效
  • 实体crud权限:插件权限校验过后如果此次请求是crud类型的插件,那么接下来还会校验实体权限,通过在实体类上的@JSRuleTable注解中的permit属性来控制实体类允许哪些crud操作,默认为允许所有操作。重写checkCrudPermit方法将会导致crud权限失效
  • 实体角色权限:实体crud权限之后会判断@JSRuleTable注解中的roles属性,它表示该实体类限定哪些角色访问,除此之外的其它角色不允许访问。重写checkCrudPermit方法将会导致实体角色权限失效
  • 角色权限:通过实现IJSRuleRoleAuthority接口来配置角色的权限,它包括插件的权限以及角色与实体类之间的crud访问权限,该方式受制于上述权限。重写checkCrudPermit方法将会导致角色权限失效

权限初始化

下面展示一个自定义权限类的例子

@Component
public class RuleCrudRole implements IJSRuleRoleAuthority {
    @Override
    public Map<String, JSRuleRolePermit> initRolesPermit() {
        ConcurrentHashSet<Class<?>> models = new ConcurrentHashSet<>();
        models.add(JSRuleGetCustomModel.class);
        models.add(JSRuleDeleteCustomModel.class);
        models.add(JSRuleEditCustomModel.class);

        ConcurrentHashMap<String,JSRuleCrudPermitEnum> crud = new ConcurrentHashMap<>();
        crud.put("TestBank",JSRuleCrudPermitEnum.RU);
        crud.put("TestBankAccount",JSRuleCrudPermitEnum.CRU);

        JSRuleRolePermit permit = new JSRuleRolePermit(crud,models);
        JSRuleRolePermit permit2 = new JSRuleRolePermit(null,models);

        Map<String, JSRuleRolePermit> result = new HashMap<>();
        result.put("admin",permit);
        result.put("skk",null);
        return result;
    }
}

上面的例子中admin和skk为角色的名称,角色名称对应的JSRuleRolePermit对象则表示该角色拥有哪些权限,包括但不限于插件权限以及实体对象的crud权限

请求方角色初始化

需要继承JSRuleDefaultExtend类或者实现IJSRuleRoleHandler接口并重写对应的"handle"方法,开发者需要在这个方法中返回当前请求方的角色set集合,最终框架会根据初始化的角色信息来判断当前用户是否有权限执行。
提示:此外开发者可以通过重写IJSRuleActionModel接口中的isOwner方法来自定义插件权限的逻辑,重写其check方法还可以自定义某一个插件的检查逻辑,还可以通过重写IJSRuleCrudModel中的checkCrudPermit方法来自定义crud权限的逻辑,总而言之,通过重写父类接口的方法均可以自定义开发

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九天流云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值