V tomto blogu se zaměříme na zásadní téma ověřování. Pro ilustraci naší diskuse použijeme příklad aplikace určené k psaní výročních hodnocení výkonnosti zaměstnanců. Tato aplikace umožňuje uživatelům bezpečný přístup k jejich účtům pomocí ověření jejich e-mailu a hesla.
Aplikace pro hodnocení výkonnosti
Přehled ověřování
Ověřování je základním kamenem každé webové aplikace a zajišťuje, že k citlivým informacím nebo k provádění konkrétních akcí mohou přistupovat pouze oprávnění uživatelé. V našem příkladu je přihlašovací proces jednoduchý, ale efektivní a ukazuje, jak 4D Qodly Pro bezpečně a efektivně zvládá ověřování.
Proces přihlášení
Přihlašovací formulář se nachází na stránce „login“ a skládá se z následujících částí:
- Dvě vstupní pole: propojená s e-mailem datového zdroje a heslem.
- Tlačítko „Přihlásit se“: spustí proces ověřování.
V aplikaci Qodly Studio jsou ve vyhrazené sekci šablon k dispozici další předpřipravené šablony formulářů pro přihlašovací funkce. Tyto šablony lze přizpůsobit tak, aby vyhovovaly konkrétním požadavkům vaší aplikace.
Funkce: Authentify()
Když uživatel klikne na tlačítko „Přihlásit se“, zavolá se funkce „ds.authentify()“ s e-mailem a heslem jako parametry.
Informace o uživateli, jako je e-mail a heslo, jsou uloženy v databázi v tabulce „Employee“. Ve funkci „authentify()“ se provede jednoduchý dotaz do databáze, aby se informace ověřily.
Zde je uveden kód, který tento proces ilustruje:
exposed Function authentify($email: Text; $password: Text) : Text
$employee :=This.Employee.query("Email = :1"; $email).first()
If ($employee#Null)
If (Verify password hash($password; $employee.Password))
Session.setPrivileges("user")
Web Form .setMessage("Authentication successful")
Else
Web Form .setError("Authentication failed")
End if
Else
Web Form .setError("Authentication failed")
End if
Správa uživatelských oprávnění
Před ověřením uživatele je nezbytné omezit přístup k citlivým datům a funkcím. Toto zabezpečení zajišťuje správa oprávnění.
Nejprve máme privilegium označené jako „none“, které disponuje všemi právy ke zdroji dat (ds) a zajišťuje komplexní přístup k databázi. Pozoruhodné je, že toto privilegium není přiděleno žádnému uživateli, čímž je zachováno bezpečné prostředí. Když jsou práva přidělena jednomu privilegiu, jsou automaticky odebrána všem ostatním, což účinně zabezpečuje systém.
Dále jsme přidali privilegium s názvem „autentizovat“. Oprávnění „promote“ je přiřazeno funkci „ds.authentify()“. To znamená, že kdykoli je tato funkce zavolána, automaticky se použije oprávnění „authentify“.
Poté zajistíme, aby byla k příslušným datovým třídám nebo používaným funkcím přidána požadovaná oprávnění pro autentizaci. V našem příkladu přiřadíme datové třídě „Employee“ oprávnění „Read“ a „Execute“.
Nakonec aktivujeme možnost„Vynutit přihlášení„. Tato volba umožňuje řídit počet otevřených webových relací, které vyžadují licence 4D Client. Uživatele můžete také kdykoli odhlásit a snížit tak počet zachovaných licencí.
Tento vícevrstvý systém oprávnění pomáhá zabránit neoprávněnému přístupu a zajišťuje bezpečný provoz aplikace.
Chcete-li se dozvědět více, přečtěte si příspěvek na našem blogu: Vynutit přihlášení se stává výchozím nastavením pro všechny REST Auth.
Přidání funkce odhlášení
Pro zvýšení uživatelského komfortu a zabezpečení je důležité poskytnout možnost odhlášení. V našem příkladu:
- Tlačítko Odhlásit je umístěno v pravém horním rohu stránky „Hlavní“.
- K tomuto tlačítku je v události „Při kliknutí“ přidána akce „odhlášení“.
To umožňuje uživatelům bezpečně ukončit relaci, vymazat veškerá aktivní oprávnění a ochránit citlivá data.
Další kroky
Ověřování a správa oprávnění jsou základem pro vytváření bezpečných webových aplikací. Chcete-li se dále seznámit s možnostmi ověřování a správy oprávnění, nahlédněte do následujících zdrojů:
- Dokumentace k těmto tématům:
- Blogy o:
Doporučujeme vám, abyste si tyto koncepty vyzkoušeli implementovat ve svých vlastních aplikacích. Máte dotazy nebo postřehy? Zapojte se do diskuse ve fóru nebo se podělte o své názory v komentářích níže. Zůstaňte naladěni na další článek z naší série!