我刚刚在gae和pyAmf上创建了一个小的服务器amf (现在关闭了?)。嗯,我也用flex4做了一个客户端,一切都运行得很好。
现在我想添加一个身份验证方法,并且我知道在flex中有一个方法可以使用
RemoteObject.setCredentials(username:String, password:String, charset:String = null):void现在我不明白如何在客户端和服务器端使用它,在哪里注册用户,我应该创建用户表吗?
有一本书叫“通过flex使用AMF的方法是什么?”
谢谢
发布于 2010-05-21 18:46:59
PyAMF的目标是为Python提供AMF编码/解码支持。为了帮助实现这一点并使这个库对人们有用,我们通过*Gateway类添加了对AMF0/3远程处理的支持。RemoteObject可以使用许多类型的“通道”来实现它的目标--超文本传输协议,RTMP,等等,其中PyAMF只支持超文本传输协议(以及轮询)。
HTTP上下文中的RemoteObject身份验证是通过会话cookie实现的。PyAMF支持许多流行的web框架(Twisted、Django、AppEngine、web2py、WSGI),每个框架都为使用会话提供了不同的接口。我们很早就决定,这将是太多的支持,无论如何,它确实超出了PyAMF要实现的范围。
由于PyAMF的范围很窄,它现在已经完成了相当多的工作(就像任何软件项目一样)。我们还有一些里程碑要实现,更好的性能和对py3k的支持是主要目标。
现在来听一些好消息。AmFast已经支持Flex (包括RemoteObject),包括你想要的任何风格,包括(据我所知)开箱即用的身份验证。它也支持AppEngine,但使用PyAMF进行AMF编码/解码。
Plasma DS是一个新的羽翼未丰的项目,旨在为Python提供完整的实现,包括LiveCycle Data Services的所有(合理)功能(想想支持RTMP的BlazeDS以及数据同步和冲突解决)。这两个项目的作者都致力于这个新的项目(只要我们找到时间:-),但要注意这个项目还处于起步阶段-还没有发布。
说了这么多,回到你的问题上:)
我建议你看看AmFast,看看它是否能满足你的需求。如果不是,那么我将通过创建一个login服务方法并相应地更新会话cookie来自己实现身份验证方法。对于HTTP session支持,我建议使用AppEngine来查看gae-sessions的session支持(假设你没有使用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提供了自己的身份验证机制,您也可以使用它们(取决于您是否想要锁定)。
发布于 2010-04-26 08:17:39
似乎RemoteObject.setCredentials已经从pyamf 0.51版本中删除了。RemoteObject Authentication width setCredentials did not work
https://stackoverflow.com/questions/2704142
复制相似问题