我希望将用户映射到帐户,然后让用户定向到与其帐户对应的名称空间。
查看了appengine_config.py
中的suggested example,似乎有一些建议的方法来确定名称空间应该是什么,即
我希望根据数据存储区中的查找选择名称空间。即
namespace = user.account.name
对于与user
关联的某个account
对象,哪个帐户具有name
字段。我想要实现这一目标的方式很少:
数据存储区查找速度很慢。是否有任何这样的预留与memcache查找?例如memcache.get('nslookup:%s' % user_id)
,user_id
。 (我相信users
对象在appengine_config.py
)中按预期工作。
或者,可以使用安全cookie来解决此问题。我对“安全”标志(即强制SSL)的安全性不满意。但是,我不确定如何最好地保护cookie中的数据。我认为对称encryption使用GAE中的密钥与PyCrypto签名是开始这条路径的一种方法。虽然这种模式已经vetted,但我特别感谢对此建议解决方案的任何想法。
从思想观点来看,安全饼干似乎不是最佳途径;我已经期望拥有用户身份,我只需要从用户到他们的帐户的映射 - 在每个请求上加密,发送,存储,接收和解密映射都没有逻辑基础。 memcache选项似乎是三者中最好的,但我会感激思想和输入。我可以想到使用安全cookie的唯一原因是性能,或者如果appengine_config.py
中没有memcache访问权限。
对我的假设的想法,意见和挑战是最受欢迎的。
感谢您的阅读。
布赖恩
答案 0 :(得分:1)
我认为安全的cookie是可行的,因为它们足够快。从Tornado中提取的基本实现就在这里(您只需要SecureCookie类并且可以忽略“会话”内容):
http://code.google.com/p/webapp-improved/source/browse/extras/sessions.py#104
答案 1 :(得分:1)
在性能方面,任何避免在每个请求上需要memcache或数据存储区查找的东西都将是最佳选择。但是,您对“安全”cookie的两个定义感到困惑:cookie规范中的“安全”标志要求cookie仅通过SSL发送,而在另一种意义上,“安全”cookie是无法修改的cookie用户无法察觉 - 这是本用例中最重要的内容。
没有必要加密内容,但是 - 你想要防止修改,而不是披露 - 所以如果你不能使用现有的库,你可以简单地将cookie的HMAC附加到它的末尾,使用您嵌入应用程序的密钥。在每个请求上验证HMAC将比使用memcache快得多。