Globale Variable user_id

ZH1896ZH

Mitglied
Guten Tag zusammen!

Ich habe ein kleines Problem, welches mich nun schon viel Zeit gekostet hat 🙂

Und zwar möchte ich nachdem sich der User erfolgreich eingeloggt hat, seine user_id im Client speichern. Das Spring-Tool gibt dem Client als Response auf den Login-Aufruf die user_id des angemeldeten user zurück. Nun möchte ich diese speichern und in ein anderes javascript file übertragen, damit dort der user anhand seiner id erkannt wird.

Da ich ein ziemlicher Javascript-Neuling bin, habe ich ein ziemliches durcheinander veranstaltet. Muss sagen Java gefällt mir um einiges besser, viel ordentlicher 🙂

anbei noch ein paar code schnipsel:

[CODE lang="javascript" title="Login-Prozess"] //Login-Prozess
loginForm.addEventListener("submit", (e) => {
e.preventDefault();
let u_email = document.querySelector("#u_email").value;
let u_password = document.querySelector("#u_password").value;

// Ajax Prozess --> Rest-Service Aufruf
$.ajax({
type: "POST",
url: "/api/login",
data: JSON.stringify({
userEmail: u_email,
userPassword: u_password,
}),
success: showCalendar,
dataType: "json",
contentType: "application/json",
});
});[/CODE]

[CODE lang="javascript" title="HTML-Seite wird gewechselt bei erfolgreichem Login"]//Wenn Login erfolgreich wird die Kalendersicht angezeigt
function showCalendar(response) {
active_user = response;
console.log("modul main.js: " + active_user);

if (active_user != -1) {
//-1 --> login failed
window.location.href = "calendar.html"; //dieses html-file ist mit calendar.js verknüpft
}
}[/CODE]

[CODE lang="javascript" title="calendar.js --> Import der Variable activeUser in ein anderes JS file"]import { active_user } from "./main.js";
const id = active_user;[/CODE]
 
ich ändere in der URL die Endung zu calendar.html -> login umgangen

da musst du dir was anderes einfallen lassen 😵
 
ich ändere in der URL die Endung zu calendar.html -> login umgangen

da musst du dir was anderes einfallen lassen 😵
alles klar danke. wie gesagt bin ein absoluter anfänger was webtechnologien angeht. ist es in dem fall besser wenn man nur ein index.html file hat und dann durch ajax abrufe die html-seite verändert. anstatt verschiedene html dateien miteinander zu verlinken?
 
mit php kannst du schon mal ganze seiten zurück geben
Java:
<?php function TestBlockHTML($replStr) {
    ob_start(); ?>
    <html>
    <body><h1><?php echo($replStr) ?></h1>
    </html>
<?php
    return ob_get_clean();
} ?>
ob das jetzt sinnvoll ist weis ich nich... hab im studium immer mehr javascript gehasst und web aufbau weil ich normales java einfach viel nicer dicer finde xD


mir ist nur das aufgefallen dass du da ne schwachsetelle hast und auch bei der problem lösung das alte problem noch da wäre
 
mit php kannst du schon mal ganze seiten zurück geben
Java:
<?php function TestBlockHTML($replStr) {
    ob_start(); ?>
    <html>
    <body><h1><?php echo($replStr) ?></h1>
    </html>
<?php
    return ob_get_clean();
} ?>
ob das jetzt sinnvoll ist weis ich nich... hab im studium immer mehr javascript gehasst und web aufbau weil ich normales java einfach viel nicer dicer finde xD


mir ist nur das aufgefallen dass du da ne schwachsetelle hast und auch bei der problem lösung das alte problem noch da wäre
Habe noch nie mit PHP gearbeitet, gibt es keine andere Möglichkeit?
Ja in Sachen wie organsiert man den Frontend muss ich wohl noch vieles dazu lernen. Ich weiss nicht wie ich genau das alles strukturieren soll. Gibt es evtl. hilfreichen Content der sich nur Webclients bezieht?

1619697352705.png

So sieht die meine Projektstruktur momentan aus.
Würdest du das package static anderst organisieren?
 
du musst ein backend haben ...ohne php ..ohne java oder sonst was was ddu als backend hast kannst du den login ja nicht mal durch ziehen

so wie es jetzt aussieht hast du java als backend udn da musst du halt schauen wie java den Content deiner aktuellen seite durchwechseln kann mit hilfe von javascript -> somit das problem mit der neuen siete weg ist

also nicht auf eine andere HTML seite wechseln sondern das alte div unsichtbar machen und das neue Sichtbar das wäre die einfachste hau drauf methode das könntest du aber komplett mit javascript machen
jedoch könnte man durch seiten manipulation wieder einfach die divs wechseln 😀 (und ab dabin ich bei web dev ausgesteigen)
mit der Bedingung dass der Login von java erfolgreich war

ausserdem bleibst dann auch auf der aktuellen Sseite und hast die Login ID immer parat😉
 
Zuletzt bearbeitet von einem Moderator:
du musst ein backend haben ...ohne php ..ohne java oder sonst was was ddu als backend hast kannst du den login ja nicht mal durch ziehen

so wie es jetzt aussieht hast du java als backend udn da musst du halt schauen wie java den Content deiner aktuellen seite durchwechseln kann mit hilfe von javascript -> somit das problem mit der neuen siete weg ist

also nicht auf eine andere HTML seite wechseln sondern das alte div unsichtbar machen und das neue Sichtbar das wäre die einfachste hau drauf methode das könntest du aber komplett mit javascript machen
jedoch könnte man durch seiten manipulation wieder einfach die divs wechseln 😀 (und ab dabin ich bei web dev ausgesteigen)
mit der Bedingung dass der Login von java erfolgreich war

ausserdem bleibst dann auch auf der aktuellen Sseite und hast die Login ID immer parat😉

hallo joreyk,

ja ich mache jetzt alles mit divs, also je ein html file und js file. gibt sicher schönere varianten, aber hauptsache es läuft.

besten dank für deine hilfe!

der thread kann geschlossen werden..
 
Muss sagen Java gefällt mir um einiges besser, viel ordentlicher
Das ist bei aktuellem JavaScript nicht mehr ganz so schlimm.

Kleines Beispiel:

[code lang=JavaScript title=UserLogin.js]
export default class UserLogin {
get username() {
return sessionStorage.getItem("username");
}

set username(name) {
sessionStorage.setItem("username", name);
}

render(elem) {
elem.innerText = this.username;
}
}
[/code]

[code lang=javascript title=main.js]
import UserLogin from './UserLogin.js';

const login = new UserLogin();
const output = document.getElementById("output");
const newUserName = document.getElementById("newLoginName");
const button = document.getElementById("setLoginName");
button.addEventListener("click", _ => login.username = newUserName.value);

login.render(output);
[/code]

[code lang=HTML]
<div id="output"></div>
<input id="newLoginName" />
<input id="setLoginName" type="button" />
<script src="main.js" type="module"></script>
[/code]
Die HTML-Datei kannst Du mehrfach anlegen; so lange Du den Browser nicht schließt und damit die Sitzung beendest, bleibt der Spaß gespeichert.
 

Zurück
Oben