PyAMF的目的是为Python提供AMF en/decode支持。为了帮助实现这一目标,并实际使该库对用户有用,我们通过*Gateway
类添加了AMF0/3远程处理支持。 RemoteObject可以使用许多类型的'频道'来实现其目标 - HTTP,RTMP等,其中PyAMF仅支持HTTP(并在此处进行轮询)。
通过会话cookie实现HTTP上下文中的RemoteObject身份验证。 PyAMF支持许多流行的Web框架(Twisted,Django,AppEngine,web2py,WSGI),这些框架为使用会话提供了不同的接口。我们很早就做出决定,认为这样做太多了,无论如何,它确实超出了PyAMF的目标。
由于其范围狭窄,PyAMF现在已经完成了很多工作(与任何软件项目一样多)。我们还有几个里程碑,更好的性能和py3k支持是主要目标。
现在有些好消息。 AmFast已经支持Flex Messaging(包括RemoteObject),几乎可以根据需要随意选择,包括(据我所知)开箱即用的身份验证。它也支持AppEngine,但使用PyAMF进行AMF编码/解码。
Plasma DS是一个新的羽翼未丰的项目,旨在提供一个全面实施的Flex消息的为Python,包括LiveCycle Data Services一切(显)功能(觉得跟RTMP支持和数据同步和解决冲突的BlazeDS的。这两个项目的作者是致力于这个新的企业(每当我们找到时间:-)),但要注意,该项目还处于初级阶段 - 尚未发布。
说了这么多,回到你的问题:)
我建议考虑看看AmFast,看看是否满足您的需求。如果没有,那么我会通过创建一个login
服务方法并相应地更新会话cookie来自己实现身份验证方法。对于HTTP会话支持,我建议您在AppEngine上查看gae-sessions的会话支持(假设您没有使用Django作为您的web应用程序的一部分 - 您没有指定)
认证代码可能是一件简单的事情:
from google.appengine.ext import db
from gaesessions import get_current_session
class User(db.Model):
username = db.StringProperty()
password = db.StringProperty()
def login(username, password):
q = User.all()
q.filter('username =', username)
q.filter('password =', password)
user = q.get()
if not user:
return False
session = get_current_session()
session['user'] = str(user.key())
return True
免责声明:不要在生产中使用这个代码,有许多安全漏洞,并意味着作为只是一个指南。
当然,Google提供了自己的认证机制,您可以使用它们(取决于是否需要锁定)。