How to set and read properly token from locastorage after logout-login?

Hy!
I have a really intresting problem. I’m sure I did something wrong but I really don’t know what would be the “good” solution, the best way to handle this edge-case.
After login I store user’s token in localstorage and in every provider’s constructor I read it into a promise:

 this._headers = this.storage.get('token').then((token) => {
                return new Headers({
                    "Content-Type": "application/json",
                    "Authorization": "Bearer " + token,
                });
            }); 

And I use it in every request. Maybe a relevant information is that I define the providers in app.module.ts to be singletons. (I’m not sure if it is a good practice I still learn ionic 2).
Now the problem is that if the user logs out and a new user logs in the token don’t change until I restart the app.
I guess that because of the provider already exists it’s constructor isn’t called at login so the token don’t update.
I managed to solve with an event. On login I publish an event and in every provider after this event I read again the token, BUT I’m sure that this isn’t a good practice.
My real question is that how can I solve this issue?

Thank you very much.

The event seems fine to me, but I question why every provider needs this. I just have a single AuthedHttp provider that handles all backend calls.

Thank you for your answer.
Currently I have different providers for different kind of tasks and every of them makes http calls. Should I make a provider which only returns it’s response and after that, in the other providers I just manipulate the data before sending it to the views? This would be a better approach?

I think so, because it would be more DRY to centralize the token handling in a single place. My AuthedHttp class wraps all the methods of the stock Http class and deals with adding the authorization headers as needed (sometimes different ones depending on the URL). Any other providers can just call its get(), post(), put(), delete(), &c methods without concern about authentication.

Thank you for the answer.