Don't take anything personally...
Everyone's opinion is just that, an opinion, it is not truth, not a fact, it is just something someone said.
Whatever anyone says to you comes from their own life experience, issues or triggers. It really has nothing to do with you. Your job is to maintain your 'center' and let it roll off your back. You are not obligated to take 'in' all the words that are hurled at you.
Nothing other people do is because of you. It is their issue. They are responsible for what they say or do, as are you. But you cannot be responsible for them.
A person is mouthing off, he is directing his venom at you, this feels personal, but it isn't. It is always your choice whether you take it to heart or not. You know your own truth and even if what was said is hurtful, if it isn't true, there is nothing to obsess about.
Words can hurt, but only if you let them.
Once you realize that what they say is a reflection of them, not you, it is much easier to let it go. You certainly don't have to stay there and take any abuse AND you don't need to explain yourself or your position.
"When someone is vicious toward you they are giving you a glimpse of the pain they carry in themselves." Bryant McGill
Even though you may recognize that this person is hurting, it doesn't mean you need to let them take it out on you. If they are disrespecting you in such a manner, leave them to it and walk away.