Сеанс обработки Python-Falcon
Я использую Python колбу для создания простого веб-приложения, в котором пользователь может найти путь, скажем localhost:8000/
и войдите. если вход выполнен успешно, отображается другая страница, но я хочу знать, как я могу перенаправить на главную страницу, если пользователь уже вошел в систему? Например, если я вхожу в первый раз, меня перенаправляют на главную страницу, и если я открываю вторую вкладку и снова нажимаю URL для входа в систему, я автоматически перенаправляюсь на главную страницу (так же, как gmail?).
class LoginPage(object):
def on_get(self, req, resp, form={}):
1 ответ
Для очень простых приложений HTTP Basic Auth, вероятно, достаточно хорош. Настой делает это очень легко. Следующий декоратор, примененный к функции, доступной только для определенных пользователей, делает именно это:
from functools import wraps
from flask import request, Response
def check_auth(username, password):
"""This function is called to check if a username password combination is valid. """
return username == 'admin' and password == 'secret'
def authenticate():
"""Sends a 401 response that enables basic auth"""
return Response(
'Could not verify your access level for that URL.\n'
'You have to login with proper credentials', 401,
{'WWW-Authenticate': 'Basic realm="Login Required"'})
def requires_auth(f):
@wraps(f)
def decorated(*args, **kwargs):
auth = request.authorization
if not auth or not check_auth(auth.username, auth.password):
return authenticate()
return f(*args, **kwargs)
return decorated
Чтобы использовать этот декоратор, просто оберните функцию просмотра:
@app.route('/secret-page')
@requires_auth
def secret_page():
return render_template('secret_page.html')
Если вы используете базовую аутентификацию с mod_wsgi, вам нужно будет включить перенаправление аутентификации, в противном случае apache потребляет необходимые заголовки и не отправляет его в ваше приложение: WSGIPassAuthorization.