Целью PyAMF является предоставление поддержки AM/en для декодирования для Python. Помогая достичь этого и фактически сделав библиотеку полезной для людей, мы добавили поддержку AMF0/3 удаленно через классы *Gateway
. RemoteObject может использовать множество типов «каналов» для достижения своих целей - HTTP, RTMP и т. Д., Из которых PyAMF поддерживает только HTTP (и опрос при этом).
Аутентификация RemoteObject в контексте HTTP достигается через сеансовые куки. PyAMF поддерживает множество популярных веб-фреймворков (Twisted, Django, AppEngine, web2py, WSGI), каждый из которых предоставляет разные интерфейсы для использования сеансов. На раннем этапе мы решили, что это будет слишком много для поддержки и что в любом случае это действительно выходит за рамки того, что предполагается достичь ПМАМ.
В настоящее время PyAMF в значительной степени выполняется (насколько может быть любым программным проектом) благодаря его узкому пространству. У нас есть еще несколько этапов для достижения, лучшей производительности и поддержки py3k, являющихся основными целями.
Теперь для некоторых хороших новостей. AmFast уже поддерживает Flex Messaging (включая RemoteObject) в значительной степени независимо от вашего вкуса, включая (как я понимаю) аутентификацию из коробки. Он также поддерживает AppEngine, но использует PyAMF для кодирования/декодирования AMF.
Plasma DS новый молодой проект, направленный на обеспечение полного осуществления Flex Messaging для Python, включая все (разумные) черты LiveCycle Data Services (вспомните BlazeDS с поддержкой RTMP и синхронизации данных и разрешения конфликтов. Авторы обоих проектов (когда мы находим время :-)), но будьте осторожны, что проект находится в зачаточном состоянии - пока нет релизов.
С учетом всего сказанного, вернемся к вашему вопросу :)
Я бы предложил взглянуть на AmFast и посмотреть, если это удовлетворяет ваши потребности. Если нет, то я бы сам реализовал методы аутентификации, создав метод обслуживания 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 предоставляет свои собственные механизмы авторизации, и вы можете использовать их вместо этого (зависит, хотите ли вы заблокировать).