Переадресация web2py на функцию https для определенных страниц - PullRequest
0 голосов
/ 31 марта 2019

У меня есть некоторые функции контроллера (в разных контроллерах), украшенные @auth.requires_membership(role='manager').Если это запрос http, я хотел бы убедиться, что они (и только они) перенаправляются на версии https.

Я попытался абстрагировать такую ​​функцию в модуль, который я вызываю в началефункции в любом контроллере, который требует перенаправления, но web2py жалуется, что «глобальное имя« перенаправление »не определено»:

from gluon import current

def https_redirect() :
    request = current.request
    if not request.is_local and not request.is_https:
        redirect(URL(scheme='https', args=request.args, vars=request.vars))

Должен быть лучший способ сделать это.Какие рекомендуемые варианты?

1 Ответ

1 голос
/ 01 апреля 2019

Уже есть встроенный метод request.requires_https() - при вызове, если текущий запрос не по HTTPS, он перенаправляется на текущий URL-адрес по схеме https.

Относительно redirect, это глобальная переменная, определенная в среде исполнения web2py, поэтому она доступна только в моделях, контроллерах и представлениях.Вы можете получить к нему доступ через модуль current, используя current.globalenv['redirect'].

. Вы также можете перенаправить, используя исключение HTTP напрямую (что и делает redirect за кулисами):

from gluon.http import HTTP
from gluon.html import URL

raise HTTP(303, location=URL(...))
...