Защитите маршруты в Next JS, используя Firebase Authentication - PullRequest
1 голос
/ 15 января 2020

Маршрут, который я хочу защитить: /account

Если пользователь НЕ аутентифицирован, перенаправьте его на /signIn

Имея SSR Next JS проект и работая с Аутентификация в Firebase, как мне получить проверенные в бою правильные защищенные маршруты?

Пример, приведенный в документах Next JS, сейчас не работает: with-firebase-auth

Итак, я представил вопрос: with-firebase-auth-example-not-working

Добавьте к этому, что я новичок в Next Js, а также, к сожалению, Я никогда не использовал JWT :( или какую-либо реализацию файлов cookie / JWT / сессий с бэкэнд-защитой маршрутов .... До сих пор, когда я хочу / нуждаюсь в этом.

Какой обходной путь я пробовал, ну, как-то так:

import Account from "./Account.js";
import Loading from "./Loading.js";
import { useRequireAuth } from "./use-require-auth.js";

function Account(props) {
  const auth = useRequireAuth();

  // If auth is null (still fetching data) 
  // or false (logged out, above hook will redirect)
  // then show loading indicator.
  if (!auth) {
    return <Loading />;
  }

  return (
    <Account auth={auth} />
  );
}

// Hook (use-require-auth.js)
import { useEffect } from "react";
import { useAuth } from "./use-auth.js";
import { useRouter } from "./use-router.js";

function useRequireAuth(redirectUrl = '/sigIn'){
  const auth = useAuth();
  const router = useRouter();

  // If auth.user is false that means we're not
  // logged in and should redirect.
  useEffect(() => {
    if (auth.user === false){
      router.push(redirectUrl);
    }
  }, [auth, router]);

  return auth;
}

Но все это происходит на стороне клиента .... сервер ничего не проверяет.

...