2007年04月03日

Flash, Python | Django AMF 0.4

先月末からいくつかリリースが続いてますが、今度はDjango AMFの新バージョン。ようやく認証システムを実装しました。これで実際のお仕事にも使っていただけると思います。
http://sourceforge.jp/projects/djangoamf/

Djangoのユーザ認証システムをDjango AMFでもそのまま使おうかと思ったのだけど、もっと柔軟にできるような仕組みにしました。したつもりです。
まだドキュメントをWikiにまとめてないのだけど、コードにするとこんな感じ。

・ActionScript
var service:RemotingService = new RemotingService();
# アクセスユーザのユーザ名とパスワードを設定します。
service.setCredentials("username", "password");
service.do_something();
・settings.py
# 設定ファイルにアクセスユーザのパーミッションを取得する
# 関数を指定します。文字列または関数オブジェクト。
AMF_AUTH_FUNC = 'sample.views._get_user_perms'
・sample/view.py
from amf.django import permission_required

# このview関数を実行するのに必要なパーミッションを
# デコレータの引数に指定します。
@permission_required('admin')
def do_something(request):
    return 'This function can be invoked by admin user.'

def _get_user_perms(request, username, password):
    """
    settings.pyで指定した関数。Django AMFが認証時に実行します。
    指定されたusernameとpasswordから、ユーザが所持している
    パーミッション(ロール)の文字列を返します。
    複数パーミッションを所持している場合はリストかタプルで返します。
    """
    if username == 'username' and password == 'password':
        return 'admin'
    return None

認証に失敗するとFlashにはFaultEventが返ります。FaultEvent#typeの値は「AMFAuthenticatinError」、#codeの値は「401」です。

次のバージョンではDjangoの認証システムをそのまま使える便利関数を提供する予定です。

Posted by otsuka : 17:18 | Comment (0) | Trackback (0)
Comment









名前、アドレスを登録しますか?