werkzeug

Форк
0
/
httpbasicauth.py 
40 строк · 1.3 Кб
1
"""Shows how you can implement HTTP basic auth support without an
2
additional component.
3
"""
4
from werkzeug.serving import run_simple
5
from werkzeug.wrappers import Request
6
from werkzeug.wrappers import Response
7

8

9
class Application:
10
    def __init__(self, users, realm="login required"):
11
        self.users = users
12
        self.realm = realm
13

14
    def check_auth(self, username, password):
15
        return username in self.users and self.users[username] == password
16

17
    def auth_required(self, request):
18
        return Response(
19
            "Could not verify your access level for that URL.\n"
20
            "You have to login with proper credentials",
21
            401,
22
            {"WWW-Authenticate": f'Basic realm="{self.realm}"'},
23
        )
24

25
    def dispatch_request(self, request):
26
        return Response(f"Logged in as {request.authorization.username}")
27

28
    def __call__(self, environ, start_response):
29
        request = Request(environ)
30
        auth = request.authorization
31
        if not auth or not self.check_auth(auth.username, auth.password):
32
            response = self.auth_required(request)
33
        else:
34
            response = self.dispatch_request(request)
35
        return response(environ, start_response)
36

37

38
if __name__ == "__main__":
39
    application = Application({"user1": "password", "user2": "password"})
40
    run_simple("localhost", 5000, application)
41

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.