Express a Session

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod RednammoC 5. 12. 2023 13:32

Dobrý den, používám React + Express + MongoDB a snažím se Uložit přes server/src/routes/POST/loginData.js data do Session v server/src/routes/GET/getSessionData.js . Ale, ale stále mi to pochází přes else

Kód: Vybrat vše
if (sessionData) {
      res.status(200).json(sessionData);
    } else {
      res.status(404).json({ msg: "Data not found in session" });
    }


spolu s server/src/helpers/session.js
--------------------------------------------------------
Po kliknutí na Přihlásit v hlavičce a vyplnění formuláře
Jméno: danielconka1993@gmail.com
Heslo: asd

Přikládám git projektu https://github.com/danielconka1993/e-mail
- .env je uvnitř + pro zpuštění stačí nainstalovat náležitosti a zapnout přes npm start server + front-end (v popisu na GitHubu u projektu).

Pokud by mi někdo poradil budu nevýslovně šťastný.
RednammoC
Junior


Odeslat příspěvekod RednammoC 6. 12. 2023 12:26

Celé to prozatím spouštím na localu 5000 to je v pořádku, problém je načtení dat do Sessionu.

Problém musí být někde mezi:
server/src/helpers/session.js
server/src/routes/POST/loginData.js
server/src/routes/GET/getSessionData.js

a maximálně serverem.

Front end pro vypsání zatím nemůže nic hlásit, protože po přihlášení v: http://localhost:5000/getSessionData

mám stále jen ({"msg":"Data not found in session"})

viz.: get SessionData.js
Kód: Vybrat vše
if (sessionData) {
      res.status(200).json(sessionData);
    } else {
      res.status(404).json({ msg: "Data not found in session" });
    }

----------------------------------------------

Přihlášení:
Jméno: danielconka1993@gmail.com
Heslo: asd
----------------------------------------------

Problém je někde v getSessionData.
Naplnění funguje, ověřeno v session.js přes - console.log("Setting session data:", userData) // Set dat funguje
RednammoC
Junior

Odeslat příspěvekod Wikan 6. 12. 2023 12:49

No já ti nevím. Mně ten server běží na portu 3000.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod RednammoC 6. 12. 2023 13:03

Problem je podle mě v MainMenu.js, protože při přihlášení stránky je session prazdny se get objevuje jako prázdny, ale po přihlášení se useEffect znovu nespustí a proto je prázdný, když ale useEffect upravím, namísto 1 načtení na [sessionData], tak se zacyklí.

Nebo ho z MainMenu.js odebrat (myslím getSession) a přidat ho do FormLogin.js?

Wikan píše:No já ti nevím. Mně ten server běží na portu 3000.

FrontEnd ano, ale server spouštím na Portu 5000

Kód: Vybrat vše
const PORT = process.env.PORT || 5000; // 1 server

Nahrál jsem tam všude možně consol.logy, a jde to na tom krásně vidět
RednammoC
Junior

Odeslat příspěvekod Wikan 6. 12. 2023 14:01

Neposíláš si v těch requestech cookie, takže server nepozná, že jsi to ty.
Koukni na tohle: https://create-react-app.dev/docs/proxy ... evelopment
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod RednammoC 18. 12. 2023 20:31

Vyřešil jsem to přes localStorage raději než přes Session. Přišel mi praktičtější.

Kód: Vybrat vše
            const expirationTime = Date.now() + 24 * 60 * 60 * 1000; // Expire 1 day
            const userData = {
              _id: finalData.user[0]._id,
              email: finalData.user[0].email,
              name: finalData.user[0].name,
              expiration: expirationTime,
            };
            localStorage.setItem("userData", JSON.stringify(userData));


Který poté rozesílám přes GlobalContext, kterým mám v App.js obalené Všechny Routy
RednammoC
Junior

Odeslat příspěvekod Wikan 18. 12. 2023 22:54

Tak to rovnou můžeš vyhodit přihlašování. Ale jak chceš.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod RednammoC 1. 1. 2024 20:11

Při přihlášení se mi uloží data do local storage a pošlou rovnou i do GlobalContextu, který obaluje App.js Krom toho na hlavní stránce mám:

Kód: Vybrat vše
import { useContext, useEffect } from "react"
import { GlobalContext } from "./GlobalContext";

const LoadDataFromLS = ({onLoadCompleted}) => {
    const {loginOK, loginData} = useContext(GlobalContext)

    useEffect(() => {
      const storedUserData = localStorage.getItem("userData");
      if (storedUserData) {
        const userData = JSON.parse(storedUserData);
        loginOK(true);
        loginData(userData._id, userData.email, userData.name, userData.token);
        // console.log(userData.token)
        // console.log(userData)
      } else {
        // Zde můžete přidat kód pro případ, kdy nejsou žádná data v localStorage
      }
   
      // Callback pro označení, že načítání je hotovo
      if (onLoadCompleted) {
        onLoadCompleted();
      }
   
      // eslint-disable-next-line react-hooks/exhaustive-deps
    }, []);

  return (
    <div></div>
  )
}

export default LoadDataFromLS
,

Pro načtení dat při refresi stranky
RednammoC
Junior


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků