Ti z vás, kteří začali používat Qodly Studio for 4D, již vědí, jak výkonný je tento nový nástroj pro vývoj podnikových webových aplikací. Pokud jste tak ještě neučinili, najdete zde další informace, jak začít.
Aplikace vytvořené pomocí Qodly Studio for 4D se spoléhají na rozhraní REST API. Aplikace 4D 20 R5 je dodávána se skvělou novou funkcí: Režim „Vynutit přihlášení“.
V režimu Force Login se licence klienta 4D spotřebuje pouze tehdy, když se uživatelé úspěšně přihlásí a začnou pracovat s daty a logikou vaší aplikace.
Čtěte dále a dozvíte se více! A nezapomeňte si stáhnout naši ukázku, abyste ji viděli v akci!
Co je režim vynuceného přihlášení?
Webové formuláře Qodly nejsou HTML. Qodly Studio pro 4D totiž popisuje váš formulář jako soubor JSON, který se později vykreslí ve webovém prohlížeči koncového uživatele jako HTML.
Aby se formulář Qodly vykreslil ve webovém prohlížeči koncového uživatele, je z prohlížeče spuštěn požadavek REST na stažení JSON formuláře ze serveru.
Další akce koncového uživatele na formuláři rovněž vyvolají požadavky REST pro zpracování dat a volání funkcí tříd datového modelu ORDA na serveru.
Před 4D 20 R5, stejně jako u všech ostatních požadavků REST, server vytvoří a udržuje webovou relaci, která hostí úložiště relacía oprávnění relace, a současně se spotřebovává licence 4D Client.
Pokud tedy implementujete jednoduchý autentizační formulář (vstupy login + heslo) pomocí Qodly Studio for 4D, jakmile koncový uživatel na tento formulář vstoupí, licence 4D Client se spotřebuje ještě před zahájením procesu autentizace.
Spotřebovaná licence klienta 4D se uvolní až po uzavření webové relace po uplynutí časového limitu nečinnosti v délce alespoň jedné hodiny (nebo po restartu serveru). To může vést k nedostatku dostupných licencí klienta 4D, které by uživatelům umožnily pracovat s vaší aplikací.
Jsme si vědomi, že toto chování by mohlo být vylepšeno, proto:
V aplikaci 4D 20 R5 můžete při práci s rozhraním REST API používat nový režim „Vynutit přihlášení„.
Tento režim je pro Qodly Studio pro 4D aplikace velkým přínosem, protože tento proces vylepšuje. Pomáhá vám kontrolovat spotřebu klientských licencí 4D a nyní můžete uvolnit klientskou licenci 4D, když uživatel ukončí používání aplikace.
Abychom to shrnuli
V režimu vynuceného přihlášení se licence spotřebovávají pouze tehdy, když uživatelé začnou pracovat s daty a logikou s, které váš server REST obsluhuje. To znamená, že
- Snížení spotřeby licencí: Přihlašovací formuláře již nespotřebovávají licence.
- Zlepšení uživatelského komfortu: Uživatelé se mohou pokoušet o přihlášení, aniž by to mělo vliv na dostupné licence.
- Lepší správa zdrojů: Licence se uvolní, jakmile uživatel ukončí aplikaci.
Uvolněte licenci klienta 4D kdykoli.
Relace může být ukončena jednoduchým spuštěním standardní akce Odhlásit a licence 4D Client může být uvolněna.
Jedná se o významné vylepšení, pojďme se tedy ponořit do podrobností a zjistit, jak můžete tuto funkci využít.
Jak aktivovat režim vynuceného přihlášení
Zapnutí režimu Vynutit přihlášení je jednoduché. Stačí přejít do sekce Role a oprávnění a aktivovat jej.
Tím se odpovídajícím způsobem aktualizuje soubor roles.json vašeho projektu.
{
"permissions": {
"allowed": [
]
},
"privileges": [
],
"roles": [
],
"forceLogin": true
}
Podrobné rozdělení chování
Jakmile je tento režim aktivován:
- Popisné požadavky REST( tj. požadavky jako rest/$catalog nebo rest/$getWebForm pro vykreslení webového formuláře ) nespotřebovávají žádnou licenci.
- Ostatní požadavky REST( např. požadavky zpracovávající data nebo volající funkce tříd datového modelu ORDA) jsou odmítnuty, dokud není úspěšně dokončena autentizace.
- Ve třídě datového skladu je nutné implementovat funkci, jejíž název musí být authentify(). Tato funkce zpracovává autentizaci. Jedná se o jediný popisný požadavek REST přijatý bez úspěšné autentizace.
Jakmile je autentizace úspěšná, jsou všechny požadavky REST přijaty a je spotřebována licence klienta 4D.
Úspěšná autentizace znamená volání funkce Session.setPrivileges().
Zde je uveden časový průběh této akce:
Příklad: Příklad: Aplikace pro prodejce
Tento příklad představuje aplikaci, kterou používají prodejci pro práci se soubory svých zákazníků.
Koncový uživatel vykreslí webový formulář s datovým zdrojem typu výběr entit (datová třída Customers) s počáteční hodnotou All.
Tato chyba je přijata, protože dosud nebylo provedeno úspěšné ověření:
Koncový uživatel však může vykreslit tento jednoduchý webový formulář, který po načtení nezpracovává data ani nevolá žádnou funkci. V tuto chvíli není spotřebována žádná licence 4D Client.
Když koncový uživatel klikne na tlačítko Go, zavolá se funkce authentify(). Ta byla implementována ve třídě datového úložiště.
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
Toto volání je akceptováno.
Pokud se autentizace nezdaří, funkce Session.setPrivileges() se nevolá. Nedojde tedy ke spotřebování licence + žádné popisné požadavky REST nezůstanou odmítnuty.
Pokud je autentizace úspěšná, je volána funkce Session.setPrivileges(). Je tedy spotřebována licence klienta 4D a nyní je přijat jakýkoli požadavek REST. Poté můžete začít efektivně pracovat se svými daty.
Poznámka: V tomto příkladu je funkci Session. Use the setPrivileges() předán prázdný řetězec pro ověření jako host. Samozřejmě lze nastavit oprávnění odpovídající autentizaci uživatelů.
Dále můžete koncovým uživatelům nabídnout funkci odpojení díky výše zmíněné standardní akci odhlášení. Relace bude zbavena svých oprávnění a koncový uživatel se vrátí do stavu „neautentizovaný“: budou přijímány pouze popisné požadavky REST a pro práci s daty se musí znovu autentizovat.
Závěr
Díky režimu vynuceného přihlášení v aplikaci 4D 20 R5 můžete optimalizovat spotřebu licencí klienta 4D ve svých webových aplikacích Qodly Studio pro 4D. Zlepšíte tak uživatelský komfort a správu serverových zdrojů. Dejte nám vědět, co si o této funkci myslíte, na fóru 4D!