Homepage von Jean-René Thies — Projekte & Tools rund um Java, Groovy, Grails, PHP, Scala, MySQL...
    « Mastering GrailsGroovy/Grails als Ergänzung zu Java »

    Tutorial: Grails, Plugins und praktische Java-Bibliotheken

    Permalink 06.09.08 21:00, von jrt, Kategorien: Java, Groovy & Grails , Schlagworte: automatisierung, chart, export, grails, java, plugin, quartz, tutorial

    Mit dem Grails-Framework entstehen in sehr kurzer Zeit datenbankgestützte Webanwendungen. Grails eignet sich dabei besonders gut als "Klebstoff", um bekannte und bewährte Komponenten zusammenzufügen. Hier also ein kleines Tutorial für die besonders häufig auftretenden Anwendungsfälle:

    1. Benutzer-Authentifizierung
    2. Volltextsuche
    3. Datenexport in Excel-Dateien
    4. Dynamische Erzeugung von Diagrammen
    5. Zeitgesteuerte Aufgaben

    Fortsetzung:

    1. Benutzer-Authentifizierung
    Die Authentifizierung kann nur aus einem Login mit Name und Passwort bestehen, aber ebenso kann sie auf Rollen basierende Zugriffsrechte auf bestimmte Seiten beinhalten. Die offizielle Liste der Grails-Plugins enthält im Abschnitt "Security" das Spring Security Plugin (aka Acegi). Die Installation ist sehr schnell zu erledigen: im Verzeichnis des betreffenden Grails-Projekts gibt man per Befehlszeile grails install-plugin acegi ein. Nach erfolgreicher Installation erscheint ein Text wie dieser:

    Code:

    Plugin acegi-0.3 installed
    Plug-in provides the following new scripts:
    ------------------------------------------
    grails create-auth-domains
    grails generate-manager
    grails generate-registration

    Das erste Script "create-auth-domains" dient der Erzeugung der Domainklassen für Benutzer und Rollen. Geben Sie z.B. grails create-auth-domains User Role Requestmap ein, um im Grails-Projekt die Klassen "User", "Role" und "Requestmap" anzulegen. Mit grails generate-manager erhalten Sie einen praktischen Controller für die Benutzerverwaltung.

    Bootstrap-Konfiguration
    Während der Entwicklung kann man eine lokale Datenbank verwenden, deren Struktur sich automatisch an alle Änderungen anpasst. Bei jedem Neustart dieser Entwicklungsumgebung ist die Datenbank leer. In der Datei BootStrap.groovy kann man jedoch eine Initialisierung mit bestimmten Inhalten bewirken. Dadurch existiert z.B. von Anfang an eine Benutzerrolle "admin", ein entsprechender User und ggf. schon Einschränkungen auf bestimmte Controller. Eine geeignete Bootstrap-Konfiguration könnte so aussehen:

    Code:

    import org.apache.commons.codec.digest.DigestUtils as DU
     
    class BootStrap {
     
    def init = { servletContext ->
          def pass = DU.md5Hex("admin")
          def adminUser = new User(username: "admin", userRealName:"admin", enabled:true, email:"email@example.com", email_show:true, passwd:pass).save()
          def adminRole = new Role(username: "admin", authority: "ROLE_ADMIN", description: "Administratoren")
          adminRole.addToPeople(adminUser)
          adminRole.save()
          def requestmap = new Requestmap(url:"/user/**", configAttribute:"ROLE_ADMIN").save()
       }
      
       def destroy = {
       }
    }

    In Zeile 6 wird das Administrator-Passwort verschlüsselt, da in der Datenbank nur verschlüsselte Eingaben stehen sollen. Der Administrator-User wird in der Zeile 7 erzeugt, anschließend die Rolle "Administrator" definiert und in Zeile 9 der User dieser Rolle zugeordnet. In Zeile 11 wird der Zugriff auf den User-Controller eingeschränkt, so dass nur Administratoren später in die Benutzerverwaltung gelangen können.

    Nach diesen ersten Schritten kann die Grails-Anwendung bereits getestet werden. Nach dem Start im Browser werden zunächst verschiedene Controller angezeigt:

    • UserController
    • RoleController
    • LoginController
    • RequestmapController
    • LogoutController

    Der UserController ist jetzt bereits geschützt. Es erscheint eine Anmeldemaske, in der man sich mit "admin" und "admin" anmelden kann, um zur Benutzerverwaltung zu kommen. Nun kann man in der BootStrap-Datei noch die weiteren Controller Role und Requestmap schützen, so dass auch diese nur für Administratoren zugänglich sind. Die Rollen können dann direkt in der Anwendung erweitert werden, z.B. mit "User", "ReadOnly" usw. Über die Requestmaps steuert man, welche Rolle auf welche Controller zugreifen darf. Die Controllernamen sind dabei immer durchgängig in Kleinbuchstaben zu schreiben.

    Sichtbarkeit auf Webseiten steuern
    Unabhängig von der Zugriffskontrolle für einzelner Seiten möchte man oft bestimmte Navigationselemente oder Informationen nur für bestimmte Benutzergruppen anzeigen. Dies wird in den Views über ein Tagging wie dieses gesteuert:

    Code:

    <g:ifAnyGranted role="ROLE_ADMIN">Diesen Text nur Administratoren zeigen</g:ifAnyGranted>

    Seiten: 1 · 2 · 3 · 4 · 5

    2 Kommentare »

    2 Kommentare

    Kommentar von: Raphael [Besucher] · http://www.raphaelvolz.de
    Hi -

    sehr schön, dass Du auch Grails entdeckt hast. Ich hab letztes Jahr einmal ein Tutorial darüber gehalten (siehe http://www.slideshare.net/loffenauer/2007-09-10-fzi-training-groovy-grails-v-ws) und wir haben gerade eine Applikation damit gebaut (siehe http://sti.innoraise.com)

    Viele Grüße

    Raphael
    03.10.08 @ 13:59
    Kommentar von: Thomas [Besucher]
    Der Befehl erfordert mittlerweile 3 Parameter: "grails create-auth-domains User Role Requestmap".
    12.03.10 @ 13:35

    Kommentare sind für diesen Eintrag deaktiviert.

    ©2010 by Jean-René Thies

    Kontakt |