CherryPy - ToolBox

Dentro do CherryPy, as ferramentas integradas oferecem uma única interface para chamar a biblioteca CherryPy. As ferramentas definidas no CherryPy podem ser implementadas das seguintes maneiras -

  • A partir das configurações
  • Como um decorador Python ou por meio do atributo especial _cp_config de um manipulador de página
  • Como um Python chamável que pode ser aplicado a partir de qualquer função

Ferramenta de autenticação básica

O objetivo desta ferramenta é fornecer autenticação básica para o aplicativo desenvolvido no aplicativo.

Argumentos

Esta ferramenta usa os seguintes argumentos -

Nome Padrão Descrição
reino N / D String que define o valor do reino.
Comercial N / D Dicionário da forma - nome de usuário: senha ou uma função que pode ser chamada de Python retornando tal dicionário.
criptografar Nenhum Python chamável usado para criptografar a senha retornada pelo cliente e compará-la com a senha criptografada fornecida no dicionário do usuário.

Exemplo

Vamos dar um exemplo para entender como 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)

o get_usersfunção retorna um dicionário embutido em código, mas também busca os valores de um banco de dados ou de qualquer outro lugar. O administrador da classe inclui esta função que faz uso de uma ferramenta de autenticação embutida do CherryPy. A autenticação criptografa a senha e o ID do usuário.

A ferramenta de autenticação básica não é realmente segura, pois a senha pode ser codificada e decodificada por um invasor.

Ferramenta de Cache

O objetivo desta ferramenta é fornecer cache de memória do conteúdo gerado pelo CherryPy.

Argumentos

Esta ferramenta usa os seguintes argumentos -

Nome Padrão Descrição
invalid_methods ("POSTAR", "COLOCAR", "EXCLUIR") Tuplas de strings de métodos HTTP não devem ser armazenadas em cache. Esses métodos também invalidarão (excluirão) qualquer cópia em cache do recurso.
cache_Class MemoryCache Objeto de classe a ser usado para armazenamento em cache

Ferramenta de decodificação

O objetivo desta ferramenta é decodificar os parâmetros de solicitação de entrada.

Argumentos

Esta ferramenta usa os seguintes argumentos -

Nome Padrão Descrição
codificação Nenhum Ele procura o cabeçalho do tipo de conteúdo
Default_encoding "UTF-8" Codificação padrão a ser usada quando nenhuma for fornecida ou encontrada.

Exemplo

Vamos dar um exemplo para entender como 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(), '/')

O código acima pega uma string do usuário e redireciona o usuário para a página "hello.html", onde será exibido como “Hello” com o nome fornecido.

A saída do código acima é a seguinte -

hello.html