Verbesserte Nutzung von 4D Client Lizenzen mit Qodly Studio für 4D

Diejenigen von Ihnen, die Qodly Studio for 4D bereits nutzen, wissen, wie leistungsfähig dieses neue Tool für die Entwicklung von Webanwendungen für Unternehmen ist. Wenn Sie es noch nicht kennen, finden Sie hier weitere Informationen zum Einstieg.

Mit Qodly Studio for 4D erstellte Anwendungen nutzen REST APIs. 4D 20 R5 wird mit einer großartigen neuen Funktion ausgeliefert: „Force Login“ Modus.

Im Force Login Modus wird eine 4D Client Lizenz nur dann verbraucht, wenn sich der Benutzer erfolgreich anmeldet und mit den Daten und der Logik Ihrer Anwendung zu arbeiten beginnt.

Lesen Sie weiter und erfahren Sie mehr! Und vergessen Sie nicht, unsere Demo herunterzuladen, um sie in Aktion zu sehen!

Demo Sitzung beenden

Was ist der erzwungene Login-Modus?

Qodly-Webformulare sind nicht HTML. Tatsächlich beschreibt Qodly Studio for 4D Ihr Formular als JSON-Datei, die später im Webbrowser des Endbenutzers als HTML wiedergegeben wird.

Damit ein Qodly-Formular im Webbrowser des Endbenutzers dargestellt werden kann, wird eine REST-Anfrage vom Browser ausgelöst, um das JSON des Formulars vom Server herunterzuladen.

Weitere Aktionen des Endanwenders auf dem Formular lösen ebenfalls REST Requests aus, um Daten zu verarbeiten und Funktionen von ORDA Datenmodellklassen auf dem Server aufzurufen.

Vor 4D 20 R5 erstellt und nutzt der Server wie bei allen anderen REST Requests eine Websession, um den Sitzungsspeicher und die Sitzungsrechte zuhosten, und gleichzeitig wird eine 4D Client Lizenz verbraucht.

Wenn Sie also ein einfaches Authentifizierungsformular (Login + Passworteingabe) mit Qodly Studio for 4D implementieren, wird eine 4D Client Lizenz verbraucht, sobald Ihr Endbenutzer dieses Formular erreicht, bevor der Authentifizierungsprozess überhaupt begonnen hat.

Die belegte 4D Client Lizenz wird erst freigegeben, wenn die Web-Sitzung nach einem Inaktivitäts-Timeout von mindestens einer Stunde (oder einem Server-Neustart) geschlossen wird. Dies kann zu einem Mangel an verfügbaren 4D Client Lizenzen führen, damit Benutzer mit Ihrer Anwendung arbeiten können.

Wir sind uns bewusst, dass dieses Verhalten verbessert werden könnte, deshalb:

Mit 4D 20 R5 können Sie den neuen Modus „Force login“ bei der Arbeit mit den REST APIs nutzen.

Dieser Modus ist ein großer Vorteil von Qodly Studio für 4D Anwendungen, da er diesen Prozess verbessert. Er hilft Ihnen, den Verbrauch von 4D Client-Lizenzen zu kontrollieren, und Sie können jetzt eine 4D Client-Lizenz freigeben, wenn der Benutzer die Anwendung nicht mehr nutzt.

Zusammengefasst

Mit dem Force Login Modus werden Lizenzen nur dann verbraucht, wenn Benutzer mit den Daten und der Logik arbeiten, die Ihr REST Server bereitstellt. Dies bedeutet:

  • Geringerer Lizenzverbrauch: Anmeldeformulare verbrauchen keine Lizenzen mehr.
  • Verbesserte Benutzererfahrung: Benutzer können versuchen, sich anzumelden, ohne dass dies Auswirkungen auf die verfügbaren Lizenzen hat.
  • Besseres Ressourcenmanagement: Die Lizenz wird freigegeben, sobald ein Benutzer die Anwendung verlässt.

 

Freigeben einer 4D Client Lizenz zu jeder Zeit

Die Sitzung kann durch einfaches Auslösen der Standardaktion Logout beendet und eine 4D Client Lizenz freigegeben werden.

 

Dies ist eine bedeutende Verbesserung, also lassen Sie uns in die Details eintauchen, um zu erfahren, wie Sie von dieser Funktion profitieren können.

So aktivieren Sie den Force Login Modus

Das Aktivieren des Force Login Modus ist ganz einfach. Navigieren Sie einfach zum Abschnitt Rollen und Berechtigungen und aktivieren Sie ihn.

blank

Dadurch wird die Datei roles.json Ihres Projekts entsprechend aktualisiert.

{
"permissions": {
"allowed": [
]
},
"privileges": [
],
"roles": [
],
"forceLogin": true
}

Detaillierte Aufschlüsselung des Verhaltens

Sobald dieser Modus aktiviert ist:

  1. Beschreibende REST-Anfragen(d. h. Anfragen wie rest/$catalog oder rest/$getWebForm zur Darstellung eines Webformulars) verbrauchen keine Lizenz.
  2. Andere REST-Anfragen (z. B. Anfragen, die Daten verarbeiten oder Funktionen von ORDA-Datenmodellklassen aufrufen) werden abgelehnt, bis die Authentifizierung erfolgreich abgeschlossen ist.
  3. Sie müssen eine Funktion implementieren, deren Name authentify() in der Datastore-Klasse sein muss. Diese Funktion verwaltet die Authentifizierung. Dies ist die einzige beschreibende REST-Anfrage, die ohne eine erfolgreiche Authentifizierung akzeptiert wird.

 

Ist die Authentifizierung erfolgreich, werden alle REST-Anfragen akzeptiert und eine 4D Client-Lizenz wird verbraucht.

Eine erfolgreiche Authentifizierung bedeutet den Aufruf der Funktion Session.setPrivileges().

Hier ist der Zeitplan dafür:

blank

 

Beispiel: Anwendung für Vertriebsmitarbeiter

Dieses Beispiel zeigt eine Anwendung, mit der Verkäufer mit den Dateien ihrer Kunden arbeiten.

Der Endbenutzer rendert ein Webformular mit einer Datenquelle vom Typ Entitätsauswahl (Datenklasse Customers) mit dem Anfangswert All.

Dieser Fehler tritt auf, weil noch keine erfolgreiche Authentifizierung stattgefunden hat:

blank

blank

Der Endbenutzer kann jedoch dieses einfache Webformular rendern, das keine Daten verarbeitet oder eine Funktion aufruft, wenn es geladen wird. Zu diesem Zeitpunkt wird keine 4D Client Lizenz verbraucht.

 

blank

Wenn der Endbenutzer auf die Schaltfläche Go klickt, wird die Funktion authentify() aufgerufen. Sie wurde in der Klasse datastore implementiert.

exposed Function authentify($credentials : Object) : Text
	
var $salesPersons : cs.SalesPersonsSelection
var $sp : cs.SalesPersonsEntity
	
$salesPersons:=ds.SalesPersons.query("identifier = :1"; $credentials.identifier)
$sp:=$salesPersons.first()
	
If ($sp#Null)
	If (Verify password hash($credentials.password; $sp.password))
		Session.clearPrivileges()
		Session.setPrivileges("")
		return "Authentication successful"
	Else 
		return "Wrong password"
	End if 
Else 
	return "Wrong user"
End if 

Dieser Aufruf wird akzeptiert.

Wenn die Authentifizierung fehlschlägt, wird die Funktion Session.setPrivileges() nicht aufgerufen. Somit wird keine Lizenz verbraucht + es bleiben keine beschreibenden REST-Anfragen zurückgewiesen.

Wenn die Authentifizierung erfolgreich ist, wird die Funktion Session.setPrivileges() aufgerufen. Damit wird eine 4D Client Lizenz verbraucht und jede REST Anfrage wird akzeptiert. Sie können nun effizient mit Ihren Daten arbeiten.

Hinweis: In diesem Beispiel wird ein leerer String an die Funktion Session. Use the setPrivileges() übergeben, um sich als Gast zu authentifizieren. Natürlich können die Privilegien, mit denen sich die Benutzer authentifizieren, selbst festgelegt werden.

Außerdem können Sie Ihren Endbenutzern dank der oben erwähnten Standardabmeldung eine Funktion zum Trennen der Verbindung anbieten. Der Sitzung werden die Berechtigungen entzogen, und der Endbenutzer befindet sich wieder im „nicht authentifizierten Zustand“: Es werden nur beschreibende REST-Anfragen akzeptiert, und er muss sich erneut authentifizieren, um mit den Daten arbeiten zu können.

Fazit

Mit dem Force Login Modus in 4D 20 R5 können Sie den Verbrauch von 4D Client Lizenzen in Ihren Qodly Studio for 4D Web Anwendungen optimieren. Dies verbessert die Benutzerfreundlichkeit und die Verwaltung der Serverressourcen. Teilen Sie uns Ihre Meinung zu dieser Funktion in den 4D Foren mit!

 

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert ist seit 2017 als Product Owner im 4D Produktteam tätig. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Marie-Sophie ist Absolventin der ESIGELEC Ingenieurschule und begann ihre Karriere als Ingenieurin bei IBM im Jahr 1995. Sie nahm an verschiedenen Projekten teil (Wartungs- oder Build-Projekte) und arbeitete als Cobol-Entwicklerin. Dann arbeitete sie als UML-Designerin und Java-Entwicklerin. In letzter Zeit bestand ihre Hauptaufgabe darin, funktionale Anforderungen zu analysieren und zu schreiben sowie Geschäfts- und Entwicklungsteams zu koordinieren.