Best practice di routing restrittive per Google App Engine con python?

3

Dire che ho una struttura semplice:

app = webapp2.WSGIApplication([
    (r'/', 'pages.login'),
    (r'/profile', 'pages.profile'),
    (r'/dashboard', 'pages.dash'),
], debug=True)

Fondamentalmente tutte le pagine richiedono l'autenticazione ad eccezione del login. Se il visitatore tenta di raggiungere una pagina restrittiva e non è autorizzato (o non ha i privilegi), viene reindirizzato alla vista di accesso.

La domanda riguarda il design del routing. Dovrei controllare auth e ACL privs in ognuno dei moduli ( pages.profile e pages.dash dell'esempio precedente), o semplicemente passare tutte le richieste attraverso il meccanismo di routing singolo:

app = webapp2.WSGIApplication([
    (r'/', 'pages.login'),
    (r'/.+', 'router')
], debug=True)

Sono ancora abbastanza nuovo per GAE, ma la mia app richiede l'autenticazione e ACL. Sono consapevole del fatto che esiste la direttiva login sul livello di configurazione del server, ma non so come funziona e come posso farlo con la logica ACL e, peggio, non riesco a stimare il tempo necessario per farlo funzionare. Inoltre, sembra solo fornire solo 2 gruppi di utenti: admin e user .

In ogni caso, questa è la configurazione che utilizzo:

handlers:
- url: /favicon.ico
  static_files: static/favicon.ico
  upload: static/favicon.ico
- url: /static/*
  static_dir: static
- url: .*
  script: main.app
  secure: always

O mi manca qualcosa qui e ACL può essere impostato nel file di configurazione? Grazie.

    
posta Aleksandr Makov 28.06.2013 - 15:45
fonte

1 risposta

2

Le impostazioni di accesso / amministratore in app.yaml sono utili solo se stai utilizzando gli account Google per il login. Se non utilizzi account Google, dovrai implementare le cose personalmente.

L'ho fatto facendo in modo che i miei handler si sottoclassi da una classe di handler di base che ho definito. Il gestore di base implementa l'autenticazione, il reindirizzamento, la registrazione e alcune altre funzionalità comuni. Per impostazione predefinita, il gestore di base richiede che l'utente sia connesso; quindi lo sovrascrivo nelle poche sottoclassi che non richiedono l'accesso (più sicuro del contrario). I miei gestori di solo amministratori hanno una propria sottoclasse del gestore di base, che gestisce la verifica delle credenziali dell'amministratore e il reindirizzamento.

    
risposta data 15.07.2013 - 12:16
fonte

Leggi altre domande sui tag