Autenticazione utente
-
05-07-2019 - |
Domanda
Se devo seguire Cosa dovrei uno sviluppatore conosce prima di costruire un sito web pubblico? in fase di autenticazione, quindi quali opzioni ho?
Non ho mai usato PEAR e non sto per iniziare. Ho letto di phpGALC ma non ho ancora provato.
Dopo l'autenticazione entrano in gioco i diritti / il livello di accesso. Non sono un grande fan dell'uso di un singolo valore tinyint che decide cosa un utente può e non può fare, oltre a non essere molto flessibile. Di recente ho scritto un sistema di sezioni in cui specifico a quale tipo di accesso ha accesso ogni tipo di utente, ma c'è qualcosa di meglio?
Se vuoi una lingua, allora PHP5.
Soluzione
Non sono un grande fan dell'uso di un singolo valore tinyint che merita a l'utente può e non può fare, oltre al suo non molto flessibile.
Dipende ... Ti riferisci all'utilizzo del valore come numero intero o come campo bit?
Se lo stai usando semplicemente come un numero (l'utente di livello 5 ha tutte le capacità degli utenti di livello 1-4, più un po 'di più), allora sì, non è molto flessibile.
Se lo usi come bitfield, ti offre 8 (set di) funzionalità che possono essere attivate o disattivate in qualsiasi combinazione per qualsiasi utente. Lo definirei flessibile. E, se 8 funzionalità non sono sufficienti per te, è banale cambiare il tinyint (8 bit) in smallint (16 bit / capacità), int (32 bit) o ??bigint (64 bit), che dovrebbe essere superiore a sufficiente per qualsiasi applicazione, la maggior parte di noi è probabile che scriva.
Altri suggerimenti
L'autenticazione è abbastanza semplice. L'autorizzazione, attraverso un ACL o altro, può essere complessa.
L'autenticazione di solito corrisponde solo a un nome utente e una password con le credenziali archiviate. Usa solo password SSL e hash usando un salt.
L'autorizzazione può essere una bestia e la soluzione dipende dalle tue esigenze. Potresti provare PhpGALC e il componente ACL di Zend Framework. Entrambe le opzioni hanno ruoli, risorse e privilegi opzionali sebbene siano tutte denominate diversamente. Zend ACL è più semplice e generico (le regole possono essere definite semplicemente nel codice e non richiedono un database). Se i tuoi ruoli, risorse e privilegi non sono statici, con l'ACL Zend dovrai scrivere il codice per popolare l'ACL dal tuo archivio dati. Il grande vantaggio di phpGALC è che ha una GUI web. Ho trovato la GUI goffa, ma a meno che tu non capisca davvero il tuo ACL, può essere pericoloso apportare modifiche direttamente nel database considerando le complessità ACL come l'ereditarietà di ruoli e risorse. Tieni presente che Zend ACL può essere utilizzato da solo senza altre dipendenze di Zend Framework oltre a Zend Exception.
ACL e Auth sono le cose su cui sto lavorando proprio in questo momento. Sto utilizzando CakePHP al momento e fornisce un modulo esteso (anche se non semplice) per ACL, e un semplice modo di fare l'autenticazione. Sono interessato anche alle risposte.
Cosa ho raccolto:
- Impara a convalidare l'input, in particolare la differenza tra liste nere e liste bianche
- Valuta attentamente il modello di convalida della tua email
- Considera quali lingue dovrai supportare (piccoli fastidiosi accenti, tilde e simili si intromettono nei nomi, ad esempio Añagaza o Alérta).
- Roll-your-own o prebuilt?
- ACL: mantienilo semplice o potrebbe ingoiarti per intero.
- Attento a CSRF e XSRF !
La maggior parte dei framework ha un modulo di autenticazione integrato. Quindi potresti voler controllare Zend, CakePHP, Code Ignighter, ecc.
Anche una cosa che tende a confondere è la differenza tra la fuga e la codifica dei dati. Le cose sono molto più flessibili quando i dati vengono codificati quindi sono fuggiti.
L'autenticazione utente si assicura che se un utente tenta di accedere a una pagina in cui l'applicazione nega l'accesso gratuito, reindirizza l'utente alla pagina di registrazione e dopo un accesso riuscito riporta alla pagina richiesta. Una di queste implementazioni di Auth di default della torta è spiegata nelle seguenti insidie, approcci e modi di wrt.
http://enbake.com/cakephp-user-authentication-auth-component
Il framework non ti rende limitato. Ma piuttosto ti dà la velocità di sviluppo con moduli esistenti e codice più organizzato. Può mostrarti un confronto in b / n di framework se interessati.