Nápad na algoritmus (přihlášování)
Ahoj,
mám webovou aplikaci a potřebuji u ni mít možnost (dodělat) nastavit maximální počet přihlášených uživatelů současně.
Takže jde o to, aby se zároveň mohlo přihlásit například 5 uživatelů, ale šestého , aby to už vykoplo s nějakou hláškou.
Vzhledem k tomu, že aplikace je webová, a běží stejně takto v prohlížeči, ve kterém toto čtete nyní, vyplývá z toho řada podmínek.
Jde o to, aby současně mohlo být přihlášeno maximálně například 5 uživatelů. (Tuto hodnotu bude možné nastavovat).
Vzhledem k tomu, jak jsem už psal, nelze se spoléhat ani na korektní odhlašování a přihlašování.
Je nutno počítat s tím, že uživatel zavře prohlížeč, spadne mu internet atd... atd... takže ani nelze nastavovat napevno mechanismus:
"Přihlášen / odhlášen"
Na straně druhé mám k dispozici všechny běžné mechanismy (Databázi / cookies/ sessions....)
Jde mě jen o nápady, jak je možné toto celé řešit.
Když se nad tím vzevrubně zamýšlím, asi bude nutné ukládat do databáze termíny posledních přihlášení,
a tyto při neaktivitě po nějaké době nechat expirovat.
Konkrétněji jsem nad tím zatím nedumal.
Obecně jde o omezení na jeden "login".
Tzn. budu mít třeba tři loginy. Na první se půjde přihlásit dvakrat. Na druhý pětkrát. A na třetí třeba jen jednou. Jako současně myslím, z více zařízení.
BE = backend (server, databáze, ...)
FE = frontend (prohlížeč uživatele)
Takže potřebuješ vyřešit tohle: přijde požadavek na zobrazení webu, ten zpracuje tvůj server a musí odlišit, zda jde o požadavek od už přihlášenýho uživatele a pustit ho kam potřebuje
- nebo -
uživatel dostane možnost se přihlásit (je-li jich přihlášených míň než je maximum)
- nebo -
odmítnout přihlášení a procházení webu, pokud je přihlášených už maximum
Tyhle info musíš řešit jednak na FE (identifikace přihlášení) a jednak na BE (počty přihlášených, expirace).
Napsals ale podle mýho málo technických informací; co ti běží na BE, jakým způsobem se dynamicky (?) generují stránky, zda jsou některý staticky generovaný; co předsadíš před web server (nebo jak bude přímo web server zpracovávat požadavky) atd.
Udelej normalni prihlasovani, akorat pred kazdym prihlasenim zkontroluj, jestli uz dany user neni prihlaseny vicekrat nez dovolujes. Algoritmus ktery hledas, je jeden if...
Ajaxové periodické notifikace serveru, že klient je živý. Případně trvalé Websocket spojení. A pak počítadlo na spojení na serveru a expirace.