Саперное событие для изменения маршрута - PullRequest
0 голосов
/ 04 ноября 2019

Мне нужно перенаправить пользователей на страницу входа, если они не аутентифицированы. Мне нужно что-то вроде route.beforeEach в Vue.js, в идеале:

sapper.beforeRouteChange((to, from, next) => {

  const isAuth = "[some session or token check]";

  if (!isAuth) {
    next('/login')
  }

  next()
})

Я нашел Сапер-защищенные маршруты (защита маршрута) этот вопрос, но я думаю, что этого недостаточно для моих нужд,Что делать, если токен или аутентификация изменяются во время выполнения? ИЛИ это покрыто реактивностью?

Редактировать 1: Я думаю, что эта проблема в Sapper GitHub решает мою проблему.

1 Ответ

0 голосов
/ 04 ноября 2019

Итак, я поместил этот код в /src/routes/_layout.svelte:

  import AuthMiddleware from "../methods/authMiddleware.js";
  import { goto, stores } from '@sapper/app';
  const { page } = stores();

  if (typeof window !== "undefined" && typeof document !== "undefined") {
    page.subscribe(({ path, params, query }) => {
      const from = window.location.pathname;
      const redirect = (href) => { goto(href); }

      AuthMiddleware.beforeChange(from, path, redirect, params, query);
    })
  }

И это authMiddleware.js файл:

export default class AuthMiddleware {

  static beforeChange(from, to, redirect, params, query) {

    if (!AuthMiddleware._isUserAuthenticated()) {
      redirect("/login");
    }
  }

  // ~

  static _isUserAuthenticated() {
    return true; // TODO: Implement
  }
}
...