Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python 2升级到Python 3 Google应用程序引擎_Python_Google App Engine_Google Cloud Platform - Fatal编程技术网

从Python 2升级到Python 3 Google应用程序引擎

从Python 2升级到Python 3 Google应用程序引擎,python,google-app-engine,google-cloud-platform,Python,Google App Engine,Google Cloud Platform,我想将我的应用程序引擎python版本从python 2升级到python 3。但在第二代应用程序引擎中,我们不能使用app.yaml中处理程序中的login字段使应用程序引擎中的某些页面仅可供管理员访问 根据指导原则,谷歌建议如下:不支持登录字段。使用云身份和访问管理进行用户管理 我不知道如何使用身份和访问管理来控制登录访问 现在,为了提供访问权限,您必须在代码中使用Cloud IAM客户端库。您可以在Python 3中找到如何使用它的示例。现在您必须在代码中使用Cloud IAM客户端库,以

我想将我的应用程序引擎python版本从python 2升级到python 3。但在第二代应用程序引擎中,我们不能使用app.yaml中处理程序中的login字段使应用程序引擎中的某些页面仅可供管理员访问

根据指导原则,谷歌建议如下:不支持登录字段。使用云身份和访问管理进行用户管理


我不知道如何使用身份和访问管理来控制登录访问

现在,为了提供访问权限,您必须在代码中使用Cloud IAM客户端库。您可以在Python 3中找到如何使用它的示例。

现在您必须在代码中使用Cloud IAM客户端库,以便提供访问。您可以在Python 3中找到如何使用它的示例。

大多数Google云平台中的用户身份验证与Python 2应用程序引擎方法非常不同。您可以在应用程序中以多种方式完全实现用户登录以实现此限制,但您不能仅在
.yaml
文件中设置属性来实现此限制


或者,尝试将您的管理功能全部放在一个单独的应用程序引擎服务中,然后使用IAP(身份识别代理)限制所需用户访问该服务。应该有帮助。这里有一个详细的步骤,可以使用IAP保护整个应用程序引擎应用程序,而不仅仅是一个服务。

大多数谷歌云平台中的用户身份验证与Python 2应用程序引擎方法非常不同。您可以在应用程序中以多种方式完全实现用户登录以实现此限制,但您不能仅在
.yaml
文件中设置属性来实现此限制


或者,尝试将您的管理功能全部放在一个单独的应用程序引擎服务中,然后使用IAP(身份识别代理)限制所需用户访问该服务。应该有帮助。这里有一个详细的步骤,可以通过IAP保护整个应用程序引擎应用程序,而不仅仅是一个服务。

您是否试图让管理员用户实际可以调用的仅管理员端点?或者您是否正在尝试使用仅用于运行cron作业和/或排队任务的管理员端点

如果是前者(即具有管理员人员将实际查看的页面/处理程序),那么dcumeration可能就是您要查找的内容。不幸的是,正如我在appengine文档中所注意到的,您可能不得不一页一页地阅读“理论”,而从未看到您可以尝试实际使用的示例代码。然而,我的猜测是,您可能最终会编写一个decorator来检查用户授权和身份验证,如下所示

如果您只是试图限制对端点的访问以确保运行cron作业和排队任务的安全,那么您可能正在寻找解决方案。基本上,您可以编写一个decorator来验证cron作业或任务队列是否正在调用终结点/处理程序。以下是运行良好的工作代码:

#main.py
从烧瓶导入烧瓶、请求、重定向、呈现模板
app=烧瓶(名称)
#定义装饰器以保护端点
def validate_cron_头(受保护的_功能):
def cron_标头_验证程序_包装(*参数,**kwargs):
# https://cloud.google.com/appengine/docs/standard/python3/scheduling-jobs-with-cron-yaml#validating_cron_requests
header=request.headers.get('X-Appengine-Cron')
#如果要验证来自任务队列而不是CRON请求的任务请求,请使用“X-Appengine-TaskName”而不是“X-Appengine-CRON”
#例如:
#header=request.headers.get('X-Appengine-TaskName')
#可在此处找到其他可能要检查的标题:https://cloud.google.com/tasks/docs/creating-appengine-handlers#reading_app_engine_task_request_headers
#如果标头不存在,则不要运行受保护的函数
如果不是标题:
#在这里,您可以引发错误、重定向到页面等。
返回重定向(“/”)
#运行并返回受保护的函数
返回受保护的函数(*args,**kwargs)
#下面的行是允许在多个端点上使用包装器所必需的
# https://stackoverflow.com/a/42254713
cron\u头\u验证程序\u包装器。\u名称\u=受保护的\u函数。\u名称__
返回cron\u头\u校验器\u包装器
@app.route(“/example/protected/handler”)
@验证\u cron\u头
定义受保护的处理程序():
#在这里运行代码
您的\u响应\u或\u错误\u etc=“文本”
返回您的\u响应\u或\u错误\u等
@app.route(“/yet/other/example/protected/handler/”)
@验证\u cron\u头
定义另一个受保护的\u处理程序(某些\u变量=无):
#在这里运行代码
返回渲染模板(“我的示例模板”,some\u var=some\u var)

您是否试图让管理员用户实际可以调用的仅限管理员的端点?或者您是否正在尝试使用仅用于运行cron作业和/或排队任务的管理员端点

如果是前者(即具有管理员人员将实际查看的页面/处理程序),那么dcumeration可能就是您要查找的内容。不幸的是,正如我在appengine文档中所注意到的,您可能不得不一页一页地阅读“理论”,而从未看到您可以尝试实际使用的示例代码。然而,我的猜测是,您可能最终会编写一个decorator来检查用户授权和身份验证,如下所示

如果您只是试图限制对端点的访问以确保运行cron作业和排队任务的安全,那么您可能正在寻找解决方案。基本上,您可以编写一个decorator来验证cron作业或任务队列是否正在调用终结点/处理程序。以下是运行良好的工作代码:

#main.py
从烧瓶导入烧瓶、请求、重定向、呈现模板
app=烧瓶(名称)
#定义装饰器以保护端点
def validate_cron_头(受保护的_功能):