HTTP-аутентификация Bottle.py?

Как я могу заставить свое приложение Bottle.py (работающее в Paste или Cherrypy) выполнять аутентификацию HTTP (базовую или дайджест)? - Мне нужно защитить его, но не могу найти никаких HOWTO.


person James Bennet    schedule 07.11.2012    source источник


Ответы (2)


Bottle имеет встроенный декоратор auth_basic, который можно использовать в представлении:

from bottle import auth_basic, request, route

def check(user, pw):
    # Check user/pw here and return True/False

@route('/')
@auth_basic(check)
def home():
    return { 'data': request.auth }
person M Somerville    schedule 11.05.2014
comment
Можете ли вы объяснить больше? Я не уверен, как я могу сделать проверку. - person Fahad Ahammed; 13.03.2017
comment
Боюсь, это не так уж много информации. Ваша функция check полностью зависит от того, что вы хотите сделать, поэтому она может сказать, например, if user == "user" and pw == "hello": return True — хотя вообще, конечно, я бы не стал хардкодить такой пароль! - person M Somerville; 14.03.2017
comment
Что произойдет, если вы не пройдете проверку? Можете ли вы решить, что показано? - person Robert Johnstone; 10.01.2020
comment
Параметры auth_basic — это вызываемая функция, имя области аутентификации и тело, которое будет отображаться в ошибке 401, поэтому вы можете передать его туда. - person M Somerville; 11.01.2020

На GitHub есть несколько библиотек, таких как https://github.com/FedericoCeratto/bottle-cork, которые должно помочь. Это может быть проще интегрировать, чем библиотека repoze, предложенная в соответствующем посте.

person Brian Cajes    schedule 07.11.2012