Autorizzazioni e MVC

4

Sono in procinto di sviluppare un'applicazione web. Questa applicazione web è principalmente un'interfaccia CRUD, sebbene alcuni utenti possano eseguire solo alcune azioni e vedere solo alcune parti di viste.

Quale sarebbe un modo ragionevole per gestire le autorizzazioni degli utenti, dato che alcune parti di viste non sono disponibili per gli utenti? Stavo pensando di avere una funzione hasPermission(permission) che restituisce true se l'utente corrente ha il permesso dato, anche se richiederebbe condizionali attorno a tutte le parti di viste che sono visibili solo ad alcuni utenti. Ad esempio:

{% if has_permission('view_location') %}
    {{ product.location }}
{% endif %}

Temo che questo diventerà un brutto e illeggibile pasticcio, specialmente dal momento che queste autorizzazioni possono diventare un po 'complicate.

In che modo questo problema viene risolto comunemente nelle applicazioni Web?

Sto prendendo in considerazione l'utilizzo di Haskell con Happstack o Python con Django.

    
posta rightfold 22.10.2013 - 13:50
fonte

2 risposte

1

Non sono sicuro di come sia normalmente realizzato in altri framework, ma ho creato un piccolo framework PHP che essenzialmente aveva un metodo simile a quello che hai descritto per attivare la logica di autorizzazione.

Immaginerei in Django che potresti creare diversi modelli di visualizzazione che includono o non includono le parti della vista che necessitano di autorizzazioni e restituiscono viste diverse in base alle autorizzazioni, che potrebbero essere controllate principalmente in views.py. Non sono sicuro di sapere in che altro modo potresti realizzare la logica di autorizzazione più semplicemente di un semplice flag o di restituire visualizzazioni differenti.

    
risposta data 22.10.2013 - 14:53
fonte
-1

Potresti memorizzare le autorizzazioni nella tabella user nel tuo database:

user
  allow_one_area
  allow_another_area
  perm_fiddle_this
  perm_toggle_that
  perm_modify_other_users
  perm_add_users

Quindi controlla i campi appropriati prima di consentire a un determinato utente di accedere a una parte del sistema o eseguire una determinata attività.

    
risposta data 22.10.2013 - 15:38
fonte

Leggi altre domande sui tag