1. Перехват 403 ошибки можно сделать в интресепторе http клиента, в этом случае вы избавитесь от дублей обработки ошибки.
2. У вас практически все готово, просто сделайте функцию вида:
fetchBuilder(url) {
return this.$http.get(url).then((responce) => {
return response;
}).catch((error) => {
if (error.response.status == 403) {
this.redirectLogin();
}
});
};
Пользоваться как-то так:
this.fetchBuilder('/api/messages?uid=' + uid ).then(r => {
this.messages = r
})
Ну и вам правильно посоветовали использовать vuex, так вы разделите ui и взаимодействие с бэком плюс получите профит в виде реактивного хранилища данных, которые можно будет забрать из любого компонента приложения.