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