@Rufix

Как сделать проверку cookie в middleware Nuxt?

Привет, использую библиотеку vue-cookie для манипулирования куками.
Хочу реализовать редирект на страницу авторизации, если пользователь не залогинен.

У меня 2 основных вопроса:
1) Для чего нужно хранить токен в store, если при заходе на страницу он изначально пустой? И условный state.token не будет задан. Можно ведь напрямую брать из куков (или нет?).
2) Исходя из первого вопроса я начал пробовать делать проверку на наличие куков напрямую в middleware, но столкнулся с проблемой того, что this в SSR недоступен и обратиться к кукам не получается .

export default function({ redirect }) {
  if (!this.$cookie.get("token")) {
    return redirect("/welcome");
  }
}
  • Вопрос задан
  • 2677 просмотров
Пригласить эксперта
Ответы на вопрос 2
AlexeyCaTHaR
@AlexeyCaTHaR
Кмк, хранить данные в сторе условно безопаснее, т.к. куки можно из консольки подправить, а в сторе изменения можно только через мутации провести.
А так же стор доступен в миддлваре и где только хотите
export default function ({ store, redirect }) {
  if (!store.getters['user/isAuthorized']) {
    return redirect('/')
  }
}


А на тему пустоты токена = всё зависит от того, какой роутинг и как токен устанавливается)
Ответ написан
Комментировать
@VegasChickiChicki
async nuxtServerInit({ commit, dispatch }, context){
    const token = getCookie('token', context?.req?.headers?.cookie); //кастомная функция для удобного получения куков, вы их можете получать как хотите

    if (token !== undefined && token !== null && token !== 'undefined' && token !== 'null'){
      commit('user/SetUserToken', getCookie('token', context?.req?.headers?.cookie));
    }
  },


Пример получения токена на сервере из куков и записи его в storage.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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