Qual è una buona tecnica per impedire agli utenti non autenticati di accedere ai metodi del controller?

0

Ho un controller di eventi (s):

class Event extends CI_Controller{

   public function index(){
   }

   public function foo(){
   }

   //Shouldn't be able to use this method unless logged in
   public function bar(){
   }


}

E sto cercando di organizzare il mio codice in modo che sia abbastanza ordinato e diretto. Proprio ora ho un controller chiamato MY_Controller in modo che solo gli utenti autenticati possano accedere ai metodi ( edit_event() , add_event() ) di qualsiasi controller che lo estende.

Tuttavia, alcuni dei metodi nel mio controller devono essere accessibili da utenti non autenticati (come get_event() ).

Qual è un buon modo per gestirlo? Dovrei creare due controller completamente separati o estendere dal controller di eventi di base e aggiungere metodi autenticati?

In precedenza avevo un controller di gestione che gestiva tutti i metodi che richiedevano l'autenticazione come add_user , delete_user , add_doc , delete_doc . Ma è stato cancellato molto velocemente e non è stato facile aggiornare o modificare il controller (in più era disordinato e non sembrava seguire una buona etichetta di programmazione).

    
posta Sheldon 25.03.2013 - 21:39
fonte

2 risposte

1

Che ne dici di

public function bar() {
   if (notLoggedIn)
       // display error page
   else
       // perform authorized action
}

OK, quindi non è molto sexy, certamente non è tanto elegante quanto decorare i metodi con qualche cosa, ma ha il merito di darti pieno accesso al database per scopi di autenticazione, il che è più di quanto possa dirsi, diciamo, l'attributo [Authorized] in C #

    
risposta data 25.03.2013 - 22:32
fonte
1

In un progetto medio-grande separo i controller. Ciò mantiene l'implementazione di ciascun controller un po 'più pulito. E poiché la sicurezza dovrebbe essere una preoccupazione fondamentale, questo ti assicura di non dimenticare mai di verificare esplicitamente che l'utente abbia effettuato l'accesso. Inoltre, puoi cambiare rapidamente l'implementazione della sicurezza in seguito, se è necessario cambiarla.

    
risposta data 25.03.2013 - 23:57
fonte

Leggi altre domande sui tag