Permissions 可以根据命令的类型截取命令吗?

Permissions 可以根据命令的类型截取命令吗?,permissions,authorization,interceptor,axon,Permissions,Authorization,Interceptor,Axon,在中,似乎截获了任何和每一个命令。对于权限检查,我需要根据命令类型做出决定,以查看当前上下文中是否允许该命令 @Override public BiFunction<Integer, CommandMessage<?>, CommandMessage<?>> handle(List<? extends CommandMessage<?>> messages) { return (index, command) -> {

在中,似乎截获了任何和每一个命令。对于权限检查,我需要根据命令类型做出决定,以查看当前上下文中是否允许该命令

@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语句,是你现在能做的最好的事情

虽然我不确定权限检查的粒度有多细,但您可以在命令上添加某种形式的权限注释,并在其上设置特定的值/枚举。这样,您就不必直接将有效负载类型绑定到dispatcher中,只需检查注释是否存在,如果存在,则检查它的值,以进行应该对其执行的权限检查

这很可能会导致if block/switch语句比检查每个有效负载类型要小得多