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