CherryPy - Caja de herramientas
Dentro de CherryPy, las herramientas integradas ofrecen una única interfaz para llamar a la biblioteca CherryPy. Las herramientas definidas en CherryPy se pueden implementar de las siguientes formas:
- Desde los ajustes de configuración
- Como decorador de Python o mediante el atributo especial _cp_config de un controlador de página
- Como un Python invocable que se puede aplicar desde cualquier función
Herramienta de autenticación básica
El propósito de esta herramienta es proporcionar autenticación básica a la aplicación diseñada en la aplicación.
Argumentos
Esta herramienta utiliza los siguientes argumentos:
Nombre | Defecto | Descripción |
---|---|---|
reino | N / A | Cadena que define el valor del reino. |
usuarios | N / A | Diccionario de la forma - nombre de usuario: contraseña o una función invocable de Python que devuelve dicho diccionario. |
cifrar | Ninguna | Python invocable utilizado para cifrar la contraseña devuelta por el cliente y compararla con la contraseña cifrada proporcionada en el diccionario de usuarios. |
Ejemplo
Tomemos un ejemplo para entender cómo funciona:
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)
los get_usersLa función devuelve un diccionario codificado pero también obtiene los valores de una base de datos o de cualquier otro lugar. El administrador de la clase incluye esta función que hace uso de una herramienta de autenticación incorporada de CherryPy. La autenticación cifra la contraseña y el ID de usuario.
La herramienta de autenticación básica no es realmente segura, ya que un intruso puede codificar y decodificar la contraseña.
Herramienta de almacenamiento en caché
El propósito de esta herramienta es proporcionar almacenamiento en caché de contenido generado por CherryPy.
Argumentos
Esta herramienta utiliza los siguientes argumentos:
Nombre | Defecto | Descripción |
---|---|---|
métodos_ inválidos | ("POST", "PUT", "BORRAR") | Las tuplas de cadenas de métodos HTTP no se deben almacenar en caché. Estos métodos también invalidarán (eliminarán) cualquier copia en caché del recurso. |
cache_Class | Memoria caché | Objeto de clase que se utilizará para el almacenamiento en caché |
Herramienta de decodificación
El propósito de esta herramienta es decodificar los parámetros de la solicitud entrante.
Argumentos
Esta herramienta utiliza los siguientes argumentos:
Nombre | Defecto | Descripción |
---|---|---|
codificacion | Ninguna | Busca el encabezado de tipo de contenido |
Codificación_predeterminada | "UTF-8" | Codificación predeterminada que se utilizará cuando no se proporcione ni se encuentre ninguna. |
Ejemplo
Tomemos un ejemplo para entender cómo funciona:
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(), '/')
El código anterior toma una cadena del usuario y redirigirá al usuario a la página "hello.html" donde se mostrará como "Hola" con el nombre dado.
La salida del código anterior es la siguiente:
hello.html