колба перед запросом – добавление исключения для определенного маршрута

в моей функции before_request (), я хочу перенаправить пользователя в / login, если они еще не вошли в систему. Есть ли специальная переменная, которая даст мне текущий URL-адрес, который будет работать в соответствии с приведенным ниже примером?

@app.before_request def before_request(): # the variable current_url does not exist # but i want something that works like it if (not 'logged_in' in session) and (current_url != '/login'): return redirect(url_for('login')) 

мне нужно проверить, что текущий URL-адрес «/ login», потому что, если я не сервер, он переходит в бесконечный цикл.

благодаря!

3 Solutions collect form web for “колба перед запросом – добавление исключения для определенного маршрута”

Есть несколько свойств объекта запроса, который вы можете проверить, задокументированный здесь , request.path – это, вероятно, то, что вы хотите. Могу ли я предложить request.endpoint , так что вы будете защищены, если вы решите направить свое мнение на другой URL-адрес или несколько URL-адресов

 @app.before_request def before_request(): if 'logged_in' not in session and request.endpoint != 'login': return redirect(url_for('login')) 

Вы можете использовать декоратор. Вот пример того, как проверять ключ api перед специальными запросами

 from functools import wraps def require_api_key(api_method): @wraps(api_method) def check_api_key(*args, **kwargs): apikey = request.headers.get('ApiKey') if apikey and apikey == SECRET_KEY: return api_method(*args, **kwargs) else: abort(401) return check_api_key 

И вы можете использовать его с:

 @require_api_key 

Вот реализация принятого ответа с флэшем-логином :

 @app.before_request def require_authorization(): from flask import request from flask.ext.login import current_user if not (current_user.is_authenticated or request.endpoint == 'login'): return login_manager.unauthorized() 
  • Есть ли способ выполнить цикл и выполнить все функции в классе Python?
  • Penton Flask Intentional Empty Response
  • Не удается подключиться к веб-сервису Flask, соединение отказано
  • Python - поиск слов частоты списка слов в текстовом файле
  • Реверсивная хеш-функция?
  • Что делает «@reify» и когда он должен использоваться?
  • группировка объектов для достижения аналогичного среднего свойства для всех групп
  • Python / Flask - использование flask_restless с flask_httpauth
  • Flask-WTF / WTForms с Unittest не выполняет проверку, но работает без Unittest
  • Расширение флеш-сессии и сеанс по умолчанию
  • Ткань - как использовать интерактивную оболочку на удаленном компьютере?
  •  
    Interesting Posts for Van-Lav

    Python Glade не смог создать объект GladeXML

    Gimp: запуск скрипта без изображения

    Как установить текстовое поле ElementTree Element в конструкторе

    Проблема с SqlAlchemy – «Родительский экземпляр <SomeClass> не привязан к сеансу; ленивая загрузка … "

    Как преобразовать строку C (char array) в строку Python, когда в строке есть символы, отличные от ASCII?

    Как определить, является ли последовательность в Python изменчивой или нет?

    Получить список уникальных мультисетей

    Как создать графический интерфейс поверх Python APP, чтобы он мог выполнять графический интерфейс или интерфейс командной строки?

    Python, как изменить значение переменной на ходу

    Получение версии пакета с помощью pkg_resources?

    Отзывчивая запись PyAudio

    Python beatutiful soup Объект ResultSet не имеет атрибута 'get'

    ElementTree-эквивалент iter () в Python2.6

    Объединение списков в один

    jinja2: макрос выбора макроса или динамических вызовов макроса

    Python - лучший язык программирования в мире.