class PermissionAuthManager extends DefaultPermissionServiceImpl implements ReactiveAuthorizationManager<AuthorizationContext> {
    @Resource
    private AsynMenuService asynMenuService;

    @Override
    public Mono<AuthorizationDecision> check(Mono<Authentication> authentication, AuthorizationContext authorizationContext) {
        return authentication.map(auth -> {
            ServerWebExchange exchange = authorizationContext.getExchange();
            ServerHttpRequest request = exchange.getRequest();
            boolean isPermission = super.hasPermission(auth, request.getMethod().name(), request.getURI().getPath());
            return new AuthorizationDecision(isPermission);
        }).defaultIfEmpty(new AuthorizationDecision(false));
    }

    @Override
    public List<SysMenu> findMenuByRoleCodes(String roleCodes) {<FILL_FUNCTION_BODY>}
}

        Future<List<SysMenu>> futureResult = asynMenuService.findByRoleCodes(roleCodes);
        try {
            return futureResult.get();
        } catch (Exception e) {
            log.error("asynMenuService.findMenuByRoleCodes-error", e);
        }
        return Collections.emptyList();
    
<methods>public non-sealed void <init>() ,public abstract List<com.central.common.model.SysMenu> findMenuByRoleCodes(java.lang.String) ,public boolean hasPermission(org.springframework.security.core.Authentication, java.lang.String, java.lang.String) <variables>private final org.springframework.util.AntPathMatcher antPathMatcher,private com.central.oauth2.common.properties.SecurityProperties securityProperties