Nu e întrebare neaparat de cod exact, ci mai exact de concept, m-am gândit să întreb, poate sunt oameni care au mai multă experienţă ca mine.
Am o aplicaţie multitenant care funcţionează în felul următor:
Este un framework laravel, un singur codebase, un singur server, dar fiecare client are subdomeniul şi baza lui de date independentă.
Până acum era simplu, fiecare user merge la subdomeniul lui, şi se loghează, baza de date e ok, totul banal.
Apoi am avut altă aplicaţie, pe care am mers cu aceeaşi strategie, dar aici am avut nevoie de o pagină de login centralizată, pentru că un client poate avea mai multe instanţe ale aplicaţiei, ceva de genul cum are Infusionsoft dacă ştiţi aplicaţia.
Aici pentru User, din laravel am putut da enforce să folosească mereu baza de date centrală, deci toţi userii sunt în prima instanţă de fapt, se autentifică, şi acolo am un tabel de unde ştiu la care tenants are acces.
Aici am făcut un mini-sistem de autologin, bazat pe hash-uri care se pot folosi o singură dată. După ce te-ai logat, pagina îţi arată la ce instanţe ai acces şi dai click pe ele.
Când dai click, acele linkuri au un hash care de fapt face autologin la instanţa respectivă, după care goleşte hashul. Acesta este regenerat doar atunci când userul trece în altă instanţă şi vrea să revină.
Întrebarea mea este dacă e bună strategia asta, dacă ştiţi altele, în acest context, cu baze de date şi subdomenii separate? Din motive de securitate trebuie să am bazele de date separate, just in case, dar şi pentru că le mai pot muta, distribui pe alte servere, am o mică flexibilitate care o plătesc însă altundeva, ştiu.
Dacă aveţi idei sau alte strategii, mi-ar ajuta pentru că acum trebuie să încep un nou proiect similar.