# Login wie realisieren?



## Deadalus (17. Sep 2009)

Hallo,

ich entwickle gerade eine WebAnwendung auf JEE5-Basis. 
Dabei setze ich Frameworks wie JSF (mit RIchFaces), Hibernate (im ejb Container) ein.

Ich bin mir allerdings noch nicht sicher, wie ich die Login Funktion realisieren soll.

Rahmenbedingungen: 

Es wird mehrere (15 - 20) verschiedene Rollen geben, die jeweils andere Berechtigungen haben werden. 

Ein nicht eingeloggter Nutzer darf keinen Zugriff auf das System haben. (Also keinen Gast Zugang)

Die Berechtigung wirkt sich auf die Darstellung der Webseite und den Datenzugriff aus

Meine Fragen:

Gibt es für so etwas Lösungen im OpenSource Bereich? 

Muss ich die Funktionalität selbst implementieren?

Bietet die JEE von Haus aus eine Lösung?

Wären Portlets eine Möglichkeit?

Ich wäre für jede Hilfe sehr dankbar.


----------



## maki (17. Sep 2009)

Suche mal nach JAAS und Container Managed Security, die meisten modernen JSF Komponeneten bieten die Möglichkeit, einzustellen für welche Rollen sie sichtbar sind.


----------



## SlaterB (17. Sep 2009)

Arc wäre ansonsten der Fachbegriff, wie bei Graphics: drawArc()

edit: nanu, habe ich im falschen Thema gepostet
oder sich das von selbst verschoben?


----------



## internet (21. Okt 2009)

du kannst doch in den SessionBeans? folgende Annotationen nehmen:


```
@RolesAllowed({"rolle1", "rolle2"})
```

Du brauchst allerdings in deiner Datenbank eine Spalte "Rolle" o.ä.
Aber das hättest du ja wohl sowieso gemacht?


----------



## JanHH (26. Okt 2009)

seam

seam

seam

seam

...

Da ist nun wirklich genau das, was Du an Anforderungen anführst, auf simpelste Art machbar, und gerade das Zusammenspiel von JSF, RichFaces und JPA/Hibernate wird erheblich verbessert.. Gibts immer noch Leute, die JSF ohne seam benutzen?


----------



## maki (26. Okt 2009)

> Gibts immer noch Leute, die JSF ohne seam benutzen?


zB. alle die diejenigen, die keinen JBoss einsetzen 
Aber wenn man schon JBoss einsetzt mit Hibernate & JSF, dann wäre Seam wohl die bessere Entscheidung.


----------



## JanHH (27. Okt 2009)

Ich kann dazu sagen dass der Unterschied zwischen mit-seam und ohne-seam bei Benutzung von JSF+JPA wirklich so gross ist, das man definitiv nicht mehr ohne will, wenn mans einmal mit gemacht hat. Der letzte Nebensatz klingt in anderem Kontext ja durchaus zweideutig (allerdings umgekehrt) aber das trifft es eigentlich auch ganz gut . Kann man nur dringend anraten. Der JBoss ist auch nicht schlimmer als ein Tomcat, man schmeisst ein EAR-File ins deploy-Verzeichnis und startet ihn, das ist auch schon alles.

Ausserdem ist wie gesagt genau die Sache mit dem Login, den Rollen, und der Möglichkeit an allen möglichen Stellen diese zu benutzen, etwas, was da nun wirklich ganz hervorragend implementiert ist.

Ich muss endlich mal damit rumspielen, seam im Tomcat zu benutzen.. an sich ist das ja kein Problem, man muss einfach nur keine EJBs benutzen sondern simple Pojo-Beans (was man ganz einfach dadurch erreicht dass man KEINE stateful-/stateless-Annotationen über die Klassen schreibt), den EntityManager anders injizieren lassen, und dann kann man ein war-File erzeugen, welches auch im Tomcat laufen sollte.


----------



## Deadalus (27. Okt 2009)

Ich habe das Login jetzt mit einem JDBC Realm im Glassfish realisiert. Funktioniert eigentlich ganz gut.

Frameworks wie Seam würde ich nur sehr ungern benutzen. Ich versuche mich so weit wie nur möglich an die JEE Spezifikation zu halten um so wenig wie möglich Abhänigkeiten zu 3. Firmen zu haben. 

Meine Architektur ist deshalb War + Ejb Container, Geschäftlogik und Datenmanagement im EJB Container und nur die Präsentation im War Container. Datenbankzugriff erfolgt ausschließlich über die JPA. 

Dadurch bin ich komplett unabhängig vom Apllication Server und der eingestezen JPA Implementierung. Evtl. wird die Anwendung noch auf JEE6 Portiert da ist ja eh einiges von Seam eingeflossen.


----------



## maki (27. Okt 2009)

@Deadalus

Mit JPA 1.0 ist man nie vollkommen unabhängig von der Implemenbtierung, dafür ist der 1.0 JPA Standard einfach zu dünn, nur damit geht es ime nicht.


----------



## Deadalus (27. Okt 2009)

Bisher bin ich noch nicht an die Grenzen gestoßen. Ich hoffe mal das wenn es soweit kommen sollte die JEE 6 fertig ist und ich dann einfach auf JPA 2.0 umsteigen kann. 

Weiß eigentlich jemand wann es denn soweit sein wird?


----------



## maki (27. Okt 2009)

> Bisher bin ich noch nicht an die Grenzen gestoßen.


Hm... wie gehst u denn zB. mit Listen um die persistiert werden sollen? 
Da hört ime JPA 1.0 schon auf... ausser man nutzt Bag Semantik, aber dann ist eben eben keine Liste mehr (Reihenfolge, etc.).


----------



## Deadalus (27. Okt 2009)

Hmm den Fall hatte ich bisher noch nicht. 

Ich glaube die Manipulation der Daten wird sich in meiner Anwendung auf einzelne Objekte beschränken lassen. Listen muss ich eigentlich nur auslesen.

Naja das JPA 1.0 nicht das gelbe vom EI ist weiß ich. Ich würde trotzdem wenn möglich auf alles Verzichten, was die Anwendung abhängig von einzelnen Frameworks macht. Und die JPA 2.0 soll doch einen großen Sprung gemacht haben.


----------



## Noctarius (27. Okt 2009)

Nein das geht  Mit einer JoinTable *duck* Nur die propitären Annotations sind da einfacher in der Handhabung


----------

