A Survey of Federated Unlearning: A Taxonomy, Challenges and Future Directions