web2py重定向到特定页面的https功能

web2py重定向到特定页面的https功能,https,url-redirection,web2py,Https,Url Redirection,Web2py,我在不同的控制器中使用@auth.requires\u membershiprole='manager'修饰了一些控制器函数。如果这是一个http请求,我想确保这些和只有这些被重定向到https版本 我曾尝试将这样一个函数抽象为一个模块,我在任何需要重定向的控制器的函数开始时调用该模块,但web2py抱怨没有定义全局名称“重定向”: from gluon import current def https_redirect() : request = current.request

我在不同的控制器中使用@auth.requires\u membershiprole='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))

一定有更好的办法。推荐的选项是什么?

已经有内置的方法request.requires\u https-调用时,如果当前请求不是通过https的,则会使用https方案重定向到当前URL

关于重定向,这是在web2py执行环境中定义的全局重定向,因此仅在模型、控制器和视图中可用。您可以使用current.globalenv['redirect']通过当前对象在模块中访问它

您还可以直接使用HTTP异常进行重定向,这是重定向在幕后的作用:

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

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

谢谢那几乎是完美的。我只想在不使用request.is_local运行时重定向,因此我想我可以简单地执行快捷方式,例如request.is_local或request.requires_https