permissions - 可以根据类型截取命令吗?
问题描述
在Axon中,命令拦截器似乎可以拦截任何命令。对于权限检查,我需要根据命令类型来决定是否在当前上下文中允许。
@Override
public BiFunction<Integer, CommandMessage<?>, CommandMessage<?>> handle(List<? extends CommandMessage<?>> messages) {
return (index, command) -> {
// Check permissions
return command;
};
}
通常我更愿意为每个命令类型注册一个拦截器并在专用对象中处理权限检查。我将如何使用 Axon?我需要instanceof
在单个拦截器中加载大量 if 语句吗?有没有人有一个很好的使用 Axon 检查权限的例子?
解决方案
此时(Axon 4.0)框架不允许您选择直接注册DispatchInterceptors
每个命令有效负载类型。所以你建议做的事情,if-blocks/switch-statements,是你目前能做的最好的事情。
虽然我不确定您的权限检查有多精细,但您可以做的是在命令上添加某种形式的权限注释,并在其上设置特定的值/枚举。这样,您不必将有效负载类型直接绑定到调度程序中,而只需检查注释是否存在,如果存在,请检查它的值,以了解应该对其执行的权限检查类型。
这很可能会导致比检查每个有效负载类型更小的 if-block/switch 语句。
推荐阅读
- php - Wordpress 4.9 session_start 中的主题功能
- spring - 如何配置一个可以访问spring security中所有url的管理员角色
- php - PHP 7.2 升级代码 - REGEX 未定义常量的使用
- express - SocketIO 阻塞服务器
- python - 最有效的字符串缓冲
- dji-sdk - 这里有人让 DJI Windows SDK 工作了吗?
- sql - 添加 SQL EXIT HANDLER FOR SQLEXCEPTION 会导致语法错误和意外文本
- javascript - 严重:PWC6117:使用 jQuery 加载页面时找不到文件“null”
- javascript - JavaScript 没有兑现承诺
- c - 如何在文件 IO 中成功使用 Delete 函数——C