Добрый день.
Подскажите, пожалуйста, как правильно организовать авторизацию во vue?
Точнее так: корректно ли она у меня организована авторизация и почему в некоторых браузерах (IE11 или Safari) после авторизации, требуется обновить страницу.
let apiHost = 'http://domain.com';
let getOptions = {
credentials: 'same-origin',
redirect: 'follow'
};
let store = function() {
return {
user: {},
};
};
vm = new Vue({
el: '#app',
data: store,
mounted: function () {
this.getUserInfo(); // запрос к серверу и проверка авторизованности
},
methods: {
// авторизован ли пользователь
getUserInfo: function() {
let url = apiHost + '/get-user-info';
fetch(url, getOptions)
// ...
.then(function(res) {
if (!res.error) {
vm.$set(vm, 'user', res.data.user);
return Promise.resolve(res);
} else {
return Promise.reject(new Error(res.message));
}
})
.then(function(res) {
if (res.data.user.id !== undefined) {
// пользователь авторизовался, что-то делаем дальше...
} else {
// пользователь НЕ авторизовался, что-то делаем дальше...
}
})
.catch(function(err) {
// обработка ошибки
});
},
// переход на страницу авторизации
loginVK: function (){
let url = apiHost + '/ready'; // жив ли сервер?!...
fetch(url, getOptions)
// ...
.then(function() {
window.location = apiHost + '/vkAuth'; // если жив, идем дальше
})
.catch(function(err) {
// обработка ошибки
});
}
}
});
П.С. SPA не генерится node сервером, а лежит отдельно.