CherryPy - ToolBox

All'interno di CherryPy, gli strumenti integrati offrono un'unica interfaccia per chiamare la libreria CherryPy. Gli strumenti definiti in CherryPy possono essere implementati nei seguenti modi:

  • Dalle impostazioni di configurazione
  • Come decoratore Python o tramite l'attributo speciale _cp_config di un gestore di pagine
  • Come un Python callable che può essere applicato da qualsiasi funzione

Strumento di autenticazione di base

Lo scopo di questo strumento è fornire l'autenticazione di base all'applicazione progettata nell'applicazione.

argomenti

Questo strumento utilizza i seguenti argomenti:

Nome Predefinito Descrizione
regno N / A Stringa che definisce il valore dell'area di autenticazione.
utenti N / A Dizionario della forma - nome utente: password o una funzione richiamabile Python che restituisce tale dizionario.
crittografare Nessuna Python callable utilizzato per crittografare la password restituita dal client e confrontarla con la password crittografata fornita nel dizionario degli utenti.

Esempio

Facciamo un esempio per capire come funziona:

import sha
import cherrypy

class Root:
@cherrypy.expose
def index(self):

return """
<html>
   <head></head>
   <body>
      <a href = "admin">Admin </a>
   </body>
</html>
""" 

class Admin:

@cherrypy.expose
def index(self):
return "This is a private area"

if __name__ == '__main__':
def get_users():
# 'test': 'test'
return {'test': 'b110ba61c4c0873d3101e10871082fbbfd3'}
def encrypt_pwd(token):

return sha.new(token).hexdigest()
   conf = {'/admin': {'tools.basic_auth.on': True,
      tools.basic_auth.realm': 'Website name',
      'tools.basic_auth.users': get_users,
      'tools.basic_auth.encrypt': encrypt_pwd}}
   root = Root()
root.admin = Admin()
cherrypy.quickstart(root, '/', config=conf)

Il get_usersrestituisce un dizionario hardcoded ma recupera anche i valori da un database o altrove. L'amministratore della classe include questa funzione che utilizza uno strumento di autenticazione integrato in CherryPy. L'autenticazione crittografa la password e l'ID utente.

Lo strumento di autenticazione di base non è veramente sicuro, poiché la password può essere codificata e decodificata da un intruso.

Strumento di memorizzazione nella cache

Lo scopo di questo strumento è fornire la memorizzazione nella cache del contenuto generato da CherryPy.

argomenti

Questo strumento utilizza i seguenti argomenti:

Nome Predefinito Descrizione
invalid_methods ("POST", "PUT", "DELETE") Tuple di stringhe di metodi HTTP da non memorizzare nella cache. Questi metodi invalideranno (cancelleranno) anche qualsiasi copia cache della risorsa.
cache_Class MemoryCache Oggetto classe da utilizzare per la memorizzazione nella cache

Strumento di decodifica

Lo scopo di questo strumento è decodificare i parametri della richiesta in entrata.

argomenti

Questo strumento utilizza i seguenti argomenti:

Nome Predefinito Descrizione
codifica Nessuna Cerca l'intestazione del tipo di contenuto
Default_encoding "UTF-8" Codifica predefinita da utilizzare quando non viene fornita o trovata nessuna.

Esempio

Facciamo un esempio per capire come funziona:

import cherrypy
from cherrypy import tools

class Root:
@cherrypy.expose
def index(self):

return """ 
<html>
   <head></head>
   <body>
      <form action = "hello.html" method = "post">
         <input type = "text" name = "name" value = "" />
         <input type = ”submit” name = "submit"/>
      </form>
   </body>
</html>
"""

@cherrypy.expose
@tools.decode(encoding='ISO-88510-1')
def hello(self, name):
return "Hello %s" % (name, )
if __name__ == '__main__':
cherrypy.quickstart(Root(), '/')

Il codice sopra prende una stringa dall'utente e reindirizzerà l'utente alla pagina "hello.html" dove verrà visualizzato come "Hello" con il nome dato.

L'output del codice sopra è il seguente:

hello.html