169 похожих чатов

То как мы его в store то запихнём?

25 ответов

33 просмотра

Через мутацию?

const app = createApp(App); app.use(store) await store.loadSomeState(); app.mount('#app')

Vlad 🍍 Starkovsky️️
const app = createApp(App); app.use(store) await...

Да только там надо ещё роутер чуть попозже создать

Stanislav Lashmanov
Да только там надо ещё роутер чуть попозже создать

Да, забыл про роутер, но я думаю суть понятна

Prototype- Автор вопроса
Stanislav Lashmanov
Да только там надо ещё роутер чуть попозже создать

А вот я здесь призадумался с одним вопросом. Что будет, если при первичном получении /profile с backend выпадет 401, тогда перехватчик попытается сделать с помощью router redirect на страницу /login: Но ведь router ещё не инициализирован, так как запрос делается ДО app.use(router). Это первый вопрос. const api = axios.create({ withCredentials: true, timeout: 5000, headers: { "Content-Type": "application/json" }, }); api.interceptors.response.use( function (response) { return response; }, function (error) { console.log(error.response.data); if (error.response.status === 401) { // store.dispatch('logout') router.push("/login").then(console.error); return Promise.resolve(error.response); } else { return Promise.reject(error); } } ); Второй вопрос у меня возник из первого, сейчас если я не авторизован меня даже на условный home сайта (/) не пускает, так как сразу пытается выполниться запрос на получение профиля, но там падает 401 и меня редиректит на страницу логина. Я считаю что это так работать не должно, правильно ли я догадываюсь что использовать одновременно перехватчик на 401 и в beforeEnter проверку meta.requiresAuth не нужно?

Prototype
А вот я здесь призадумался с одним вопросом. Что б...

Вы связали интерцепторы аксиоса с вью роутером? Это прямой выстрел себе в ногу.

Prototype- Автор вопроса
Stanislav Lashmanov
Вы связали интерцепторы аксиоса с вью роутером? Эт...

Собственно в этом и был вопрос, я сам учуял что это вместе будет странно работать и решил уточнить. получается от interceptors и redirect на login стоит отказаться и возложить всю ответственность за права на вот эту штуку: router.beforeEach((to) => { console.log("beforeEach", to.fullPath); if (to.meta.disableIfAuthorized && store.getters["user/isAuthorized"]) { console.log("disableIfAuthorized"); return { path: "/", }; } // instead of having to check every route record with // to.matched.some(record => record.meta.requiresAuth) if (to.meta.requiresAuth && !store.getters["user/isAuthorized"]) { // this route requires auth, check if logged in // if not, redirect to login page. return { path: "/login", // save the location we were at to come back later query: { redirect: to.fullPath }, }; } });

Stanislav Lashmanov
Вы связали интерцепторы аксиоса с вью роутером? Эт...

А в глобал стор в actions ставить router.push хорошaя практика?

Prototype
Собственно в этом и был вопрос, я сам учуял что эт...

Я бы не использовал для этого meta. Гарды можно для каждого роута указывать свои. const authenticatedOnly = () => ({ next }) => { if (store.getters["user/isAuthorized"]) { next() } else { next('/login') } } { name: 'restricted', path: '/secret', beforeEnter: authenticatedOnly(), }

Prototype- Автор вопроса
Prototype- Автор вопроса

Так, я наконец-то сел пробовать вот этот вариант. const app = createApp(App); app.use(store); await store.fetchUser(); app.use(router); app.mount("#app"); store index: import { createStore } from "vuex"; import { userModule } from "@/store/userModule"; export default createStore({ modules: { user: userModule, }, strict: process.env.NODE_ENV !== "production", }); Как здесь обратиться к userModule и вызывать у него метод, который загрузит профиль пользователя?

для начала перестать называть его модулем)

Dmitry Glazkov
Как тут в телеге также код оформлять?

js (твой код) и закрывающиеся кавычки ```js function foo() {}

Prototype- Автор вопроса
Stanislav Lashmanov
Я бы не использовал для этого meta. Гарды можно дл...

Привет! А как сюда добавить чтобы был обратно redirect на путь из которого попали ? Аналог return { path: '/login', // save the location we were at to come back later query: { redirect: to.fullPath } }

Prototype
Привет! А как сюда добавить чтобы был обратно redi...

Можно получить это в beforeEnter и сохранить где-нибудь или явно указать в квери параметре

Prototype- Автор вопроса

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
13
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
4
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Карта сайта