CherryPy - Boîte à outils
Dans CherryPy, les outils intégrés offrent une interface unique pour appeler la bibliothèque CherryPy. Les outils définis dans CherryPy peuvent être implémentés des manières suivantes -
- À partir des paramètres de configuration
- En tant que décorateur Python ou via l'attribut spécial _cp_config d'un gestionnaire de page
- En tant que Python appelable qui peut être appliqué à partir de n'importe quelle fonction
Outil d'authentification de base
Le but de cet outil est de fournir une authentification de base à l'application conçue dans l'application.
Arguments
Cet outil utilise les arguments suivants -
Nom | Défaut | La description |
---|---|---|
domaine | N / A | Chaîne définissant la valeur du domaine. |
utilisateurs | N / A | Dictionnaire de la forme - username: mot de passe ou une fonction appelable Python renvoyant un tel dictionnaire. |
Crypter | Aucun | Python appelable utilisé pour chiffrer le mot de passe renvoyé par le client et le comparer avec le mot de passe chiffré fourni dans le dictionnaire des utilisateurs. |
Exemple
Prenons un exemple pour comprendre comment cela fonctionne -
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)
le get_usersLa fonction renvoie un dictionnaire codé en dur, mais récupère également les valeurs d'une base de données ou n'importe où ailleurs. L'administrateur de classe inclut cette fonction qui utilise un outil d'authentification intégré de CherryPy. L'authentification crypte le mot de passe et l'ID utilisateur.
L'outil d'authentification de base n'est pas vraiment sécurisé, car le mot de passe peut être encodé et décodé par un intrus.
Outil de mise en cache
Le but de cet outil est de fournir une mise en cache mémoire du contenu généré par CherryPy.
Arguments
Cet outil utilise les arguments suivants -
Nom | Défaut | La description |
---|---|---|
invalid_methods | ("POST", "PUT", "DELETE") | Tuples de chaînes de méthodes HTTP à ne pas mettre en cache. Ces méthodes invalideront également (supprimeront) toute copie mise en cache de la ressource. |
cache_Class | MemoryCache | Objet de classe à utiliser pour la mise en cache |
Outil de décodage
Le but de cet outil est de décoder les paramètres de la requête entrante.
Arguments
Cet outil utilise les arguments suivants -
Nom | Défaut | La description |
---|---|---|
codage | Aucun | Il recherche l'en-tête de type de contenu |
Default_encoding | «UTF-8» | Codage par défaut à utiliser quand aucun n'est fourni ou trouvé. |
Exemple
Prenons un exemple pour comprendre comment cela fonctionne -
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(), '/')
Le code ci-dessus prend une chaîne de l'utilisateur et il redirigera l'utilisateur vers la page "hello.html" où il sera affiché comme "Bonjour" avec le nom donné.
La sortie du code ci-dessus est la suivante -
hello.html