Java Bestimmte Buttons/Seiten für bestimmte Gruppen "unsichtbar" machen

Motrip90

Cadet 3rd Year
Registriert
Sep. 2016
Beiträge
32
Bestimmte Buttons/Seiten für bestimmte Gruppen "unsichtbar" machen

Hallo Leute,

Problemfall:

Ich habe verschiedene Benutzer in Datenbank gespeichert:

ID: L*****, S*****, E******

Ich will jetzt das auf meiner Startseit (direkt nach dem Einloggen) der Button "Bearbeiten" sowie die Seite "Bearbeiten" (man wird weitergeleitet wenn man auf Bearbeiten klickt) nur für Leute sichtbar ist, die ID mit L anfangen.

wie kann ich das am einfachsten machen?

Dynamic Web Project
-> JSP / JAVA / JS / HTML / CSS
 
Was ist hier deine Frage?
Wie du am einfachsten ein Rechtesystem einbauen/selbst bauen kannst?

Wenn du da an einer kleinen App aus Spaß arbeitest brauchst mind. folgendes:

- Eine Tabelle mit Berechtigungen
- Eine Tabelle mit Zuweisungen Benutzer -> Berechtigung

und ein Schnipsel Code der Anhand der Berechtigung den Button entweder ausliefert oder auch nicht bzw. die calls im Backend überhaupt erst zulässt.

In allen anderen Fällen bist du hier falsch, da die Aufgabe und die Möglichen Implikation aus Security-Sicht sich wohl nicht in ein paar Zeilen zusammenfassen lassen.
 
Zuletzt bearbeitet:
Bist Du wirklich wie in der letzten Zeile Deines Posts mit 'nackigem' JSPs unterwegs, um serverseitige HTML-Seiten zu rendern? Ist Dir bewusst, dass Du damit jedes Mal das Rad neu erfindest, z. B. beim Parsen von Benutzereingaben, sodass diese auf Deine Java-seitigen Datentypen gemappt werden?

Meine Empfehlung: Nimm eines der zig-tausend Java Webframeworks und Du bekommst vieles geschenkt, z. B. auch die Benutzerauthorisierung und Authentifizierung.
 
Kurz: Bin ein Student im 4. Semester und haben ein Projekt- Arbeit (zu 4). d.h. Kentnisse gleich nahezu 0 :D und es soll so einfach wie möglich sein, natürlich muss es nicht "perfekt" sein. Und wir haben ein Skript vom Prof -> JSP für die Verwaltung, HTML & CSS für Optik und Java für Beans, daher kenne ich mich auch nicht so gut aus.


--> Ich brauch sozusagen eine Code das: Nach dem Login die erste Zeile von ID überprüft und wenns nicht mit L anfängt dann die Seite "Bearbeiten" bzw. Button auf unsichtbar stellt (JS?)
 
Zuletzt bearbeitet:
Interesssant, da musste ich vor 15 Jahren auch durch :D Die Vorlesung heißt nicht zufällig "Verteilte Informationssysteme"? ;)

Dein Problem ist so grundsätzlicher Natur und so einfach zu lösen, dass Du Dich selbst damit beschäftigen solltest. Das ist auch nicht weiter schwer und ich kann Dich nur dazu ermutigen, sonst ist doch der Lerneffekt quasi nicht vorhanden. Wenn Du nach Tutorials suchst oder auf Stackoverflow, dann wirst Du mit Lösungsideen überschüttet.
 
ich kann dich verstehen, doch wir versuchen seit 3-4 Tagen rum (suchen, testen etc.) und keine Lösung.. Daher wenn jemand ein Lösungsvorschlag hat, werden wir davon ja auch schlauer (anpassen etc.)
 
Oh, da weiß ich gar nicht, wo ich anfangen soll.

Mal ganz grundsätzlich: Ihr sollt JSPs and JavaBeans verwenden, richtig? JavaBeans sind letztlich ganz normale, einfache Java-Klassen. Demgegenüber sind JSPs HTML-Seiten, die Java-Code enthalten. Dieser Code wird bereits auf dem Server ausgeführt, zu einer puren HTML-Seite "gerendert" und dann rüber an den Client in dessen WebBrowser geschickt. Soweit kannst Du mir folgen?

Vermutlich möchte Dein Prof., dass Du JavaBeans verwendest, weil man die so schön einfach in JSPs ansprechen kann. Dementsprechend solltest Du eine JavaBean haben, die z. B. Person heißt, etwa so (ich konzentriere mich im Folgenden auf das Wesentliche - vieles ist weggelassen, es soll nur der Kern gezeigt werden):

Code:
public class Benutzer implements Serializable {
   private String id;

  public String getId() {
    return id;
  }
}

Ich gehe davon aus, dass Ihr bereits auf die Datenbank mit JPA oder Hibernate zugreift und von dort die Benutzer holt. Wahrscheinlich habt Ihr bereits eine Klasse 'Benutzer', die mit @Entity annotiert ist.

Jetzt brauchst Du erstmal eine JSP, über die sich der Benutzer authentifizieren kann. Habt Ihr das schon? Wenn der Anwender dort auf 'submit' klickt, dann werden seine Daten (Benutzername/Passwort) auf dem Server verarbeitet und in seiner HttpSession (Begriff bekannt? Das ist ein grundlegendes Konzept, wenn man mit Java dynamische Websites erstellt --> googeln!) wird das zugehörige Benutzer-Objekt hinterlegt. Und genau auf dieses Objekt greifen wir später zu, um Elemente auf weiteren JSP-Seiten anzuzeigen/auszublenden.

Nun kommen wir zu Deinem eigentlichen Problem. In der JSP, die Deine Seite beschreibt, sollen nun Elemente ausgeblendet werden. Das könnte so aussehen (ich verwende die Scriptlet-Syntax, damit geht es am schnellsten):

Code:
<%
   String id = session.getAttribute("Benutzer");
   boolean bearbeitenErlaubt = id.startsWith("L");
%>
<HTML>
<BODY>
<%
  if (bearbeitenErlaubt) {
%>
    <button type="button">Datensatz bearbeiten</button>
<%
  }
%>
</BODY>
</HTML>

Noch eine Anmerkung: Dein Konzept hier wirkt halt schon sehr... unelegant - id zur Aussteuerung eines Rolle? Eine 'Rolle' als String?. Aber für den Anfang reicht es erstmal. Von 'professionell' ist es noch weit entfernt ;)
 
Genau das wollte ich :) Also Sowie du es geschrieben hast, könntest du mein Prof sein :D gleiche Begriffe, gleiche Klassen .. Ich bin mir sicher das es kein Programmierer Stiel ist, aber Soviel Kentnisse / Zeit ist zurzeit nicht da.

Vielen Dank ! :)
 
Du studierst Informatik und sagst "soviel Zeit ist zurzeit nicht da."? Ich helfe Dir ja gerne, aber das, was Du hier sagst, lässt mich zweifeln... zum Einen, ob ich Dir überhaupt noch helfen möchte und zum Anderen, ob Du die richtige Einstellung zum Studium hast.

Denk mal drüber nach - soviel Zeit sollte sein ;)
 
Versteh mich nicht falsch.. Das Problem liegt darin, dass wir aktuell im "Praktikum" phase sind. d.h. 8 Std gehen schon für Praxissemester weg. Dazu kommt noch die Bachelorthesis.. Ja dann halt noch das Projekt mit "3 CP" bzw. haben das Fach erst im Master (Logik ??)
 
Ah, verstehe, Du bist ein Kind des Bologna Prozess. Mein Mitgefühl hast Du :( Zu meiner Zeit gab es einfach das Diplom - ohne Credit Points und sonstiges Taktieren.
 

Ähnliche Themen

Antworten
47
Aufrufe
190.896
  • Gesperrt
Antworten
1
Aufrufe
770
Antworten
1.745
Aufrufe
244.252
Zurück
Oben