2010-04-24 165 views
0

我刚刚在gae和pyAmf上做了一个小型服务器amf(现在停机?)。 嗯,我也在flex 4中创建了一个客户端,并且所有的工作都很好。pyamf flex谷歌应用程序引擎

现在,我想补充的身份验证方法,我知道有在弯曲的方法使用

RemoteObject.setCredentials(username:String, password:String, charset:String = null):void 

现在验证我不知道如何在客户端和服务器端使用此 ,哪里注册用户,我应该创建用户表?

有一本书什么是使用AMF与flex的方式?

感谢

回答

0

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提供了自己的认证机制,您可以使用它们(取决于是否需要锁定)。