Domanda

Credo che la risposta è un accesso di amministrazione e quindi verificare se l'utente ha una bandiera di amministrazione, ma ho pensato anche di alcune altre questioni connesse.

E 'meglio avere una bandiera di amministrazione (attr_protected) nella stessa tabella utente come non amministratori? O dovrei avere una tabella di utenti admin?

Devo creare un'applicazione Rails separato per gli utenti di admin? Questo potrebbe essere eccessivo dal momento che verranno entrambi devono accedere allo stesso datbase (per non parlare che potrebbe essere un dolore enorme per impostare).

Altri suggerimenti? In questo momento ho solo bisogno di garantire una pagina o due in modo ho anche guardato in HTTP di base o l'autenticazione Digest come misura temporanea (il contenuto protetto non è in realtà che privato / importante). Ma ... non so come implementare autenticazione HTTP per azioni specifiche, ho visto solo come implementarlo per impedire l'accesso directory.

Da qualunque direzione e la discussione sarebbe grande. Sono sicuro che altri utenti Stack Overflow potranno beneficiare di questa discussione.

Grazie!

È stato utile?

Soluzione

Ryan Bates ha una grande serie in tre parti di Railscasts su questo argomento che dovrebbe dare alcuni spunti di riflessione:

Ci sono anche tre Railscasts sulle diverse tecniche di autenticazione:

Altri suggerimenti

restful_authentication plug per questo scopo. Ed è molto semplice da limitare l'accesso a qualsiasi controller o qualsiasi altro metodo. Su esempio controller aggiungere questa funzione:

private
def authorized?
  user.admin?
end

o

private
def authorized?
  user.admin? if update? || create?
end

ho definito amministratore? metodo nel mio modello User. Ho anche creato aggiornamento? e creare? metodi che controllano l'azione che è stato chiamato. In restful_authentication autorizzato? metodo viene sempre eseguito durante l'accesso di controllo.

Vorrei mettere tutto in una sola applicazione ed in una tabella (non creare utenti e tavolo admin). È possibile proteggere la bandiera admin nel vostro controller, consentendo agli utenti di impostare questo valore solo per gli utenti di amministrazione esistenti.

Penso che dipende dal tipo di somministrazione.

Se la vista gli amministratori avranno del sito è la stessa di un normale utente di, ma con ulteriori privilegi, vorrei andare con una bandiera di amministrazione. (O, come i vostri bisogni si espandono, un tavolo pieno titolo i ruoli.) Si tratta di una situazione in cui tutti vedono la stessa roba, ma gli amministratori hanno accesso a diverse azioni (eliminare? Modificare? Divieto? Etc.) che gli utenti normali non lo fanno.

Se la vista gli amministratori hanno bisogno è selvaggiamente diverso da quello di normale, mi sento di raccomandare un'applicazione Rails completamente separata che accede allo stesso database. Ad esempio, se i "amministratori" sono davvero aiutare i dipendenti da scrivania che stanno per rispondere alle chiamate telefoniche o affrontare le questioni di fatturazione, che possono avere completamente diversi punti di vista del database (e forse modi per modificare i dati) che non sono disponibili in la regolare applicazione.

Lo svantaggio di avere più siti è che è possibile avere modelli (convalide, associazioni, ecc) non sono sincronizzati. Lo svantaggio di avere un singolo sito è che si può finire per l'inserimento di tutti i tipi di codice di brutto "se-admin" in precedenza facili da comprendere parti del tuo sito. Quale problema è più facile da gestire dipende dalle vostre esigenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top