相关疑难解决方法(0)

Google App Engine - 安全Cookie

我一直在寻找一种在Google App Engine中进行基于cookie的身份验证/会话的方法,因为我不喜欢基于memcache的会话的想法,我也不喜欢强迫用户创建谷歌帐户的想法使用网站.我偶然发现了某人的帖子,其中提到了Tornado框架中的一些已签名的cookie函数,它看起来就像我需要的那样.我想到的是将用户的id存储在防篡改cookie中,并且可能使用装饰器来请求处理程序来测试用户的身份验证状态,并且作为附带好处,用户ID将可用于请求处理程序数据存储工作等.该概念类似于ASP.NET中的表单身份验证.此代码来自Tornado框架的web.py模块.

根据文档字符串,它"标记和时间戳一个cookie,因此它不能伪造"和"返回给定的签名cookie,如果它验证,或无."

我试图在App Engine项目中使用它,但我不明白尝试让这些方法在请求处理程序的上下文中工作的细微差别.有人能告诉我正确的方法,而不会失去FriendFeed开发人员投入的功能吗?set_secure_cookie和get_secure_cookie部分是最重要的部分,但是能够使用其他方法也是很好的.

#!/usr/bin/env python

import Cookie
import base64
import time
import hashlib
import hmac
import datetime
import re
import calendar
import email.utils
import logging

def _utf8(s):
    if isinstance(s, unicode):
        return s.encode("utf-8")
    assert isinstance(s, str)
    return s

def _unicode(s):
    if isinstance(s, str):
        try:
            return s.decode("utf-8")
        except UnicodeDecodeError:
            raise HTTPError(400, "Non-utf8 argument")
    assert isinstance(s, unicode)
    return s 

def _time_independent_equals(a, b):
    if len(a) != len(b):
        return False
    result = 0
    for x, y in zip(a, b):
        result …
Run Code Online (Sandbox Code Playgroud)

cookies session google-app-engine forms-authentication tornado

6
推荐指数
2
解决办法
7628
查看次数