代码之家  ›  专栏  ›  技术社区  ›  LXG

pyamf-flex谷歌应用引擎

  •  0
  • LXG  · 技术社区  · 15 年前

    我刚在gae和pyamf上做了一个服务器amf(现在关闭了?). 嗯,我在flex 4中也做了一个客户,所有的工作都很好。

    现在我想添加一个身份验证方法,我知道在flex中有一个方法可以使用

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

    现在我不明白怎么用这个了 在客户端和服务器端,在哪里注册用户,我应该创建用户表?

    有一本书,如何使用灵活的AMF?

    谢谢

    2 回复  |  直到 15 年前
        1
  •  0
  •   njoyce    15 年前

    pyamf的目的是为python提供amf en/解码支持。为了帮助实现这一点并使库对人们有用,我们通过 *Gateway 课程。RemoteObject可以使用多种类型的“通道”来实现其目标—HTTP、RTMP等,其中PyamF仅支持HTTP(在这一点上进行轮询)。

    HTTP上下文中的远程对象身份验证是通过会话cookie实现的。Pyamf支持许多流行的Web框架(twisted、django、appengine、web2py、wsgi),每种框架都为会话提供不同的接口。我们很早就决定,这将是太多的支持,在任何情况下,它确实是超出了Pyamf的预期范围。

    由于Pyamf的范围很窄,它现在几乎已经完成了很多工作(尽可能多地完成任何软件项目)。我们还有更多的里程碑要实现,更好的性能和PY3K支持是主要目标。

    现在来听听好消息。 AmFast 已经支持灵活消息传递(包括RemoteObject),无论您想要什么风格,包括(据我所知)开箱即用的身份验证。它还支持appengine,但使用pyamf进行amf编码/解码。

    Plasma DS 是一个新的初步项目,旨在为Python提供一个完整的Flex消息传递实现,包括 LiveCycle Data Services (想想Blazeds的RTMP支持、数据同步和冲突解决方案。这两个项目的作者都致力于这个新的项目(每当我们找到时间的时候),但是要注意,这个项目还处于初级阶段——还没有发布。

    尽管如此,回到你的问题上来:)

    我建议你看看阿姆法斯特,看看是否能满足你的需求。如果没有,那么我将通过创建一个 login 服务方法并相应地更新会话cookie。对于HTTP会话支持,我建议查看 gae-sessions 对于AppEngine的会话支持(假设您没有将Django用作webapp的一部分-您没有指定)

    认证代码可以是一个简单的东西,比如:

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

        2
  •  0
  •   michael    15 年前

    似乎已从pyamf 0.51版本中删除了remoteobject.setcredentials。 RemoteObject Authentication width setCredentials did not work

    推荐文章