• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Express Weiterleitung

Flosche86

New member
Hallo Zusammen,

ich habe folgendes Problem, ich habe mir eine Login Seite gebastelt welche soweit auch funktioniert. Bei einem erfolgreichem Login erfolgt eine Weiterleitung auf die Index-Seite. Wenn ich die Index-Seite im Browser aufrufe geht diese auch ohne Anmeldung auf. Ich möchte aber das nur bei erfolgreichem Login die Seite aufgeht.

Express Server.js

Javascript:
const express = require("express");
const bodyparser = require("body-parser")
const cors = require("cors");
const path = require('path');
const app = express();
const startRoute = require('./public/routes/start')
const indexRoute = require('./public/routes/index')

const corsOptions = {
    origin: "http://127.0.0.1:5500"
};
app.use(cors(corsOptions));
app.use(bodyparser.urlencoded({extended: true}))
app.use(express.json());
app.listen(3000, ()=> console.log("Server läuft!"));

app.use('/',startRoute)
app.use('/index',indexRoute)

app.post("/login",(req, res)=> {
    var p = new Promise((resolve,reject)=>{
                login(req.body,(callback) => {
                    resolve(callback);
                });
       });
    
       p.then((result) => {res.send(result)});
});

Bisher gebe ich bei einer erfolgreichen Anmeldung einfach ein Boolean zurück und verarbeite diesen dann im Frontend

Javascript:
"use strict";

document.getElementById("login").addEventListener("submit",ausgabe);

function ausgabe(event){

    event.preventDefault();

    let logindata = event.target;
    let loginvalue = new FormData(logindata);

    const value = Object.fromEntries(loginvalue);
    let url = "http://127.0.0.1:3000/login"
    

    const options = {
        method: 'POST',
        headers:{ 'Content-Type': 'application/json' },
        body:JSON.stringify(value)
    };
    
    
    console.log(value);

login(url,options);

}

async function login(url,options){
    const response = await fetch(url,options);
    const data = await response.text();
console.log(data);


    document.querySelector("#an").innerHTML = data;
    if (data == 'true'){

        window.open("http://127.0.0.1:3000/index", '_self');
        //location.href = 'https://www.google.de';

    }


}

Wie kann ich jetzt verhindern das die Seite http://127.0.0.1:3000/index nicht durch die Browsereingabe aufgeht sondern nur über erfolgreichen Login.

Grüße

Florian
 
Am Besten ist es, du schaust beim Aufruf der Seite, ob der User eingeloggt ist und wenn nicht, leitest du ihn auf die Login Seite.
Das der user die URL manuell eingibt, kannst du nicht verhindern. Aber du kannst natürlich darauf reagieren, wenn der User nicht eingeloggt ist.
Da du ja express verwendest, könntest du dir mal passport und express-session anschauen.
Du kannst das für eine simple Authentifizierung auch selber programmieren.
 
Zurück
Oben