@Override
    protected Mono<Void> doExecute(final ServerWebExchange exchange, final ShenyuPluginChain chain,
                                   final SelectorData selector, final RuleData rule) {

        KeyAuthRuleHandle keyAuthRuleHandle = KeyAuthPluginDataHandler.CACHED_HANDLE.get()
                .obtainHandle(CacheKeyUtils.INST.getKey(rule));
        if (Objects.isNull(keyAuthRuleHandle) || StringUtils.isBlank(keyAuthRuleHandle.getKeyName())
                || StringUtils.isBlank(keyAuthRuleHandle.getKey())) {
            Object error = ShenyuResultWrap.error(exchange, ShenyuResultEnum.KEY_NAME_AND_KEY_MUST_BE_CONFIGURED);
            return WebFluxResultUtils.result(exchange, error);
        }
        if (checkKey(exchange, keyAuthRuleHandle.getKeyName(), keyAuthRuleHandle.getKey())) {
            return chain.execute(exchange);
        }
        Object error = ShenyuResultWrap.error(exchange, ShenyuResultEnum.ERROR_KEY);
        return WebFluxResultUtils.result(exchange, error);
    }
@Test
    public void testNotConfigured() {
        ruleData.setHandle("{}");
        keyAuthPluginDataHandler.handlerRule(ruleData);
        exchange = MockServerWebExchange.from(MockServerHttpRequest
                .get("localhost")
                .build());
        Mono<Void> mono = keyAuthPlugin.doExecute(exchange, chain, selectorData, ruleData);
        StepVerifier.create(mono).expectSubscription().verifyComplete();
    }