如何在webapp2脚本中创建身份验证令牌?

时间:2015-11-09 20:26:39

标签: python-2.7 google-app-engine webapp2

我想通过使用脚本更轻松地在Google App Engine实例中测试端点。根据这些信息https://webapp-improved.appspot.com/guide/testing.html,我写了一个这样的简单脚本:

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)

但是存在一个问题:我的处理程序进行了安全检查,以确保只有登录用户才能调用端点。如果Cookie HTTPUnauthorized未设置属性,它将返回状态代码401(__auth__

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的{​​{1}}函数(它扩展为ActivitiesHandler

webapp2.RequestHandler

我的钱补丁代码是这样的:

def get(self):
    # Checking if user is logged in
    if self.secure and not self.logged_in:
        self.abort(401)
    # ...

然而它没有任何效果。我认为这是因为作为模块范围的变量的ActivitiesHandler.secure = False 变量在我的货币补丁代码执行之前已经与所有处理程序一起初始化。

作为替代方案,我想以编程方式为有效的app实体创建__auth__。但我无法找到有关此问题的相关信息。

欢迎任何指针或示例代码。

0 个答案:

没有答案