web2py重定向到某些页面的https功能

问题描述 投票:0回答:1

我有一些用@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))

必须有更好的方法来做到这一点。有哪些推荐选择?

https url-redirection web2py
1个回答
1
投票

已经存在内置方法request.requires_https() - 当被调用时,如果当前请求不是通过HTTPS,则使用https方案重定向到当前URL。

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

你也可以直接使用HTTP异常重定向(这是redirect在幕后所做的):

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

raise HTTP(303, location=URL(...))
© www.soinside.com 2019 - 2024. All rights reserved.