2007年04月03日
Flash, Python | Django AMF 0.4
先月末からいくつかリリースが続いてますが、今度はDjango AMFの新バージョン。ようやく認証システムを実装しました。これで実際のお仕事にも使っていただけると思います。
http://sourceforge.jp/projects/djangoamf/
Djangoのユーザ認証システムをDjango AMFでもそのまま使おうかと思ったのだけど、もっと柔軟にできるような仕組みにしました。したつもりです。
まだドキュメントをWikiにまとめてないのだけど、コードにするとこんな感じ。
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の認証システムをそのまま使える便利関数を提供する予定です。
Comment