Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Für die Umsetzung von Autorisierung werden in der Datenbank 3 Tabellen für die Verwaltung von Benutzer, Rollen und Rechte benötigt, die jeweils durch eine n:m Relation miteinander verknüpft sind. Per Assistent können Sie sich die entsprechenden Entities dafür generieren lassen. Zusätzlich werden die Entities durch ein Mapping miteinander verknüpft. Dadurch kann RapidClipse mit belibigen Bezeichnungen von Entities und Attributen umgehen. Falls das Standard-Mapping für Ihre Datenstruktur ungeeignet ist, können Sie dafür benutzerdefinierte Abfragen definieren.

...

  1. Entity für Berechtigungen bereits vorhanden - Wählen Sie Ihr bereits vorhandenes Entity aus.
    Noch kein Resource Entity vorhanden - Klicken Sie auf New Entity... um ein neues Entity Resource inklusive DAO ResourceDAO anzulegen. 
  2. Wählen Sie bei Mapping > Resource name das Attribut zur Speicherung der Benutzerrechte aus.
  3. Klicken Sie auf Next >.
Optionen:
  • Resource name - Auswahl des Attributs für die Bezeichnung der Benutzerrechte. 

Hinweis:
  • Mapping Wenn Sie das Entity Resource generieren lassen, können Sie das vorgegebene Attribut übernehmen.

Ergebnis:
  • Project Management > Entities - Es wird die Entity-Klasse Resource.java generiert oder durch Auswahl ein bereits existierendes Entity verwendet.

    EntityAttributeDatentyp
    ResourcenameString
  • Project Management > Data Access - Es wird die DAO-Klasse ResourceDAO.java generiert. Bei Auswahl eines bereits existierenden Entities wird kein neues DAO generiert. 

...

  • Role name - Auswahl des Attributs für die Bezeichnung der Rollen. 

  • Resources - Auswahl des Attributs für die Rechte. , das die Entities Role und Resource miteinander verknüpft.

  • Child roles - Auswahl des Attributs für die Child-Rollen. 

...

  1. Tabelle für die Benutzer (User) bereits vorhanden - Wählen Sie Ihr bereits vorhandenes User Entity aus.
    Noch kein User Entity vorhanden - Klicken Sie auf New Entity... um ein neues Entity User anzulegen. 
  2. Wählen Sie bei Mapping > Subject name das Attribut für den Benutzernamen aus.
  3. Klicken Sie bei MappingRoles auf Create Attribute, um im das Entity User ein mit einem Attribut anzulegenzu erweitern, das die Entities User und Roles miteinander verknüpft.
  4. Klicken Sie auf Finish.
Optionen:
  • Subject name - Auswahl des  Auswahl des Attributs für die Bezeichnung der Rollen. den Benutzernamen.

  • Roles - Auswahl des Attributs, das die Entities User und Role miteinander verknüpft.

Ergebnis:
  • Project Management > Entities

    • Role - Die Entity-Klasse Role.java wird um das Attribut users erweitert.  

      EntityAttributeDatentyp
      Role


      nameString
      resourcesSet
      childRolesSet
      parentRolesSet
      usersSet
    • User - Die Entity Klasse User.java wird um das Attribut roles erweitert.

      EntityAttributeDatentyp
      UserusernameString
      passwordbyte[]
      rolesSet
  • Project Management > Data Access - Es wird die DAO-Klasse RoleDAO.java generiert. Bei Auswahl eines bereits existierenden Entities wird kein neues DAO generiert. 

  • Project Management > Business Objects - Es wird die Klasse ExampleAuthorizationProvider.java generiert.

    Code Block
    languagejava
    themeConfluence
    package com.company.example.business;
    
    import com.company.example.entities.Resource;
    import com.company.example.entities.Role;
    import com.company.example.entities.User;
    import com.xdev.security.authorization.AuthorizationConfiguration;
    import com.xdev.security.authorization.AuthorizationConfigurationProvider;
    import com.xdev.security.authorization.jpa.JPAAuthorizationConfigurationProvider;
    
    public class ExampleAuthorizationConfigurationProvider implements AuthorizationConfigurationProvider {
    	private static ExampleAuthorizationConfigurationProvider INSTANCE;
    
    	public static ExampleAuthorizationConfigurationProvider getInstance() {
    		if (INSTANCE == null) {
    			INSTANCE = new ExampleAuthorizationConfigurationProvider();
    		}
    
    		return INSTANCE;
    	}
    
    	private JPAAuthorizationConfigurationProvider provider;
    
    	private ExampleAuthorizationConfigurationProvider() {
    	}
    
    	@Override
    	public AuthorizationConfiguration provideConfiguration() {
    		if (this.provider == null) {
    			this.provider = new JPAAuthorizationConfigurationProvider(User.class, Role.class, Resource.class);
    		}
    
    		return this.provider.provideConfiguration();
    	}
    }


...