Skip to content

Latest commit

 

History

History
57 lines (38 loc) · 2.41 KB

11. Autenticazione.md

File metadata and controls

57 lines (38 loc) · 2.41 KB

Intro

Gestita dall'app auth.

Appena si crea l'applicazione vengono create delle tabelle per la gestione degli utenti, come auth_user. Le tabelle sono create nel DB alla prima migrazione. La relazione mantiene campi come user, pass, ..., is_admin (flag amministratore) e is_staff (flag editor sito).

Accesso al campo

self.request.user da CBV o FBV. user.<field> da template.

Alla creazione Admin o Anonymous.

Permessi

La gestione dei permessi permette di caratterizzare utenti diversi da admin e anonymous.

#Hint modella il DB prima di crearlo sul DBMS

Nel caso della biblioteca:

  • utente anonimo: permesso in lettura ad alcune tabelle
  • utente base (lettore): scrittura con bassi privilegi
  • staff (bibliotecario)
  • admin

Login e logout

Login e logout sono offerti dal package views.LoginView e views.LogoutView. È semplice come registrare gli endpoint login e logout. Devo tuttavia scrivere i template: login.html e logged_out.html in templates/regisration. In settings posso impostare il success URL.

Form di creazione tailor-made, si può ereditare da forms.UserCreationForm. Creato sulla base della classe User; posso estenderla con altri campi nel caso in cui il servizio lo richieda.

Autenticazione e viste

  1. nascondere i link alle view a cui non si è autorizzati (incompleto)
  2. ritornare http 401/403 per view proibite (decoratore @login_required)

#Hint passa un parametro GET alla pagina di login: notok per segnalare errore di auth.

Protezione CBV

Si usano gli AccessMixin. La CBV eredita da LoginRequiredMixin, che appone automaticamente il decoratore @login_required ai metodi della classe.

#Attenzione è la prima classe da cui deve ereditare

Permessi

Gestibili con i Django Groups: tabella dei gruppi di utenti.

Alla creazione dell'utente devo aggiungerlo al gruppo di appartenenza.

g = Group.objects.get(name='Lettori')
g.user_set.add(user)

Verifica di appartenenza

Per verificare l'appartenenza di un utente ad un gruppo, su una FBV, posso usare un decoratore.

I mixin per i gruppi sono offerti dal pacchetto django-braces. Si usa ereditando da GroupRerquiredMixin e definendo la variabile di classe group_required: List[str], dove vengono enumerati i gruppi a cui deve appartenere.

Staff members

Per proteggere le view usate dagli amministratori: PermissionRequiredMixin

Definendo se si necessita del permesso da staff o admin.