Esecuzione dell'autenticazione utente in un costruttore di controller CodeIgniter?

1

In " The Clean Code Talks - Unit Testing ", Miško Hevery afferma che "il minimo lavoro possibile dovrebbe essere fatto nei costruttori [per rendere più facilmente testabili le classi] ". Mi ha fatto riflettere sul modo in cui ho implementato il mio meccanismo di autenticazione degli utenti.

Dopo aver approfondito lo sviluppo di MVC tramite CodeIgniter, ho progettato la mia prima applicazione Web per eseguire l'autenticazione utente per risorse protette nei costruttori di controllori nei casi in cui ogni funzione pubblica in quel il controller richiede che l'utente sia autenticato.

Per i controllori con metodi pubblici che hanno requisiti di autenticazione misti, sposterei naturalmente l'autenticazione dal costruttore in ogni metodo che richiede l'autenticazione (anche se attualmente non ne ho bisogno).

Ho fatto questa scelta principalmente

  1. per mantenere il controller serrato e
  2. per garantire che tutte le risorse nel controller siano sempre coperte.

Per quanto riguarda la longevità e la manutenibilità del codice: data la struttura dell'applicazione, non posso prevedere una situazione in cui uno dei controller interessati avrebbe bisogno di un metodo pubblico che non richiedesse l'autenticazione dell'utente, ma posso vederlo come un potenziale inconveniente in generale con questa implementazione (cioè, che richiede un futuro refactoring).

Questa è una buona idea?

    
posta msanford 29.08.2012 - 18:29
fonte

1 risposta

2

Questo è quello che faccio anch'io.

La semplicità del codice per controllare l'autenticazione nel costrutto è più favorevole per me (il costrutto non è troppo grasso).

Controllo l'autorizzazione minima richiesta nel costrutto e le autorizzazioni individuali nei singoli metodi.

Se tutti i metodi del controller richiedono permessi uguali e solo minimi, li inserisco nel costrutto.

Un'altra forma dell'implementazione è la separazione del controller per gli utenti autenticati.

I controller di backend estendere 'Admin_Controller' che controlla l'autenticazione nel suo costrutto, limitando in tal modo tutte le operazioni che l'utente non è autenticato.

Questo rende il codice più riutilizzabile e affidabile.

    
risposta data 29.08.2012 - 18:34
fonte

Leggi altre domande sui tag