2010-04-24 2 views
0

Я только что сделал небольшой серверный amf на gae и pyAmf (теперь вниз?). Ну, я также сделал клиента в flex 4, и все работает хорошо.pyamf flex google app engine

Теперь я хотел бы добавить метод проверки подлинности, и я знаю, что есть способ, в прогибается аутентификации с использованием

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

Теперь я не понимаю, как использовать этот в стороне клиента и на стороне сервера , где регистрировать пользователя, следует ли создавать пользовательские таблицы?

есть книга, как можно использовать AMF с гибкостью?

благодаря

ответ

0

Целью 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 предоставляет свои собственные механизмы авторизации, и вы можете использовать их вместо этого (зависит, хотите ли вы заблокировать).