Python 2.7 如何在webapp2脚本中创建身份验证令牌?
我想通过使用脚本使在Google App Engine实例中测试端点变得更容易。基于这些信息,我编写了一个简单的脚本,如下所示:Python 2.7 如何在webapp2脚本中创建身份验证令牌?,python-2.7,google-app-engine,webapp2,Python 2.7,Google App Engine,Webapp2,我想通过使用脚本使在Google App Engine实例中测试端点变得更容易。基于这些信息,我编写了一个简单的脚本,如下所示: from main import app params = { 'top': 'true', 'sort_by': 'most-recent', } query = urllib.urlencode(params) url = '/activities?' + query request = webapp2.Request.blank(url)
from main import app
params = {
'top': 'true',
'sort_by': 'most-recent',
}
query = urllib.urlencode(params)
url = '/activities?' + query
request = webapp2.Request.blank(url)
response = request.get_response(app)
ActivitiesHandler.secure = False
但有一个问题:我的处理程序有一个安全检查,以确保只有登录用户才能调用端点。如果cookie\uuuu auth\uuuu
未正确设置,它将返回401状态代码(HTTPUnauthorized
)
HTTPUnauthorized: This server could not verify that you are authorized to access the document you requested. Either you supplied the wrong credentials (e.g., bad password), or your browser does not understand how to supply the credentials required.
下面是相关的webapp2配置
'webapp2_extras.sessions': {
'cookie_name': '__session__',
'secret_key': login.secrets.SESSION_KEY,
'cookie_args': {
'max_age': 30 * 24 * 60 * 60
}
},
'webapp2_extras.auth': {
'cookie_name': '__auth__',
# Use with 'remember' flag to make persistent cookies
'token_max_age': 30 * 24 * 60 * 60,
'user_attributes': []
},
我已经尝试“修补”我的处理程序类以绕过检查
下面是我的处理程序类的get
函数ActivitiesHandler
(它扩展了webapp2.RequestHandler
)
我的货币补丁代码如下所示:
from main import app
params = {
'top': 'true',
'sort_by': 'most-recent',
}
query = urllib.urlencode(params)
url = '/activities?' + query
request = webapp2.Request.blank(url)
response = request.get_response(app)
ActivitiesHandler.secure = False
然而,它不会产生任何效果。我认为这是因为app
变量是模块范围的一个变量,在我的money补丁代码执行之前,它已经与所有处理程序一起初始化了
作为替代方案,我希望以编程方式为有效的用户
实体创建一个\uuuuuuuuuuuuuuuuuuuuuuuuuu
。但我找不到这方面的相关信息
欢迎使用任何指针或示例代码。您是否正在开发服务器中运行请求处理程序?您总是可以检测环境,在RequestHandler子类的
\uuuu init\uuu()
方法中,您可以检测到您不在生产环境中,并设置标志?否。我想在任何环境下运行它,因为有时请求处理程序的结果可能会因数据存储索引的状态而改变。这就是为什么我想编写一个通用脚本来调用端点以验证结果。谢谢你确定在你的处理人到达之前401还没有返回吗?您可以分享更多的代码吗?您是否在app.yaml
文件中使用login:admin
选项?您是否在开发服务器中运行请求处理程序?您总是可以检测环境,在RequestHandler子类的\uuuu init\uuu()
方法中,您可以检测到您不在生产环境中,并设置标志?否。我想在任何环境下运行它,因为有时请求处理程序的结果可能会因数据存储索引的状态而改变。这就是为什么我想编写一个通用脚本来调用端点以验证结果。谢谢你确定在你的处理人到达之前401还没有返回吗?你能分享更多你的代码吗?你是否在app.yaml
文件中使用login:admin
选项?