TastyPie 経由で Django と通信する Adobe Air モバイル アプリケーションがあります。アプリを使用するには、最初に登録する必要があります。したがって、彼らは自分の電子メールとパスワードを提供する必要があります。その後、彼らは「ログイン」できるようになります。成功したユーザー名とパスワードの組み合わせを入力した後、api-key がキャッシュされるモバイルアプリに返され、ユーザーが「ログイン」するのが最善のアイデアだと思いました。
ユーザーを登録して「ログイン」するためのより良い方法があれば教えてください。
Django 内には、POST 経由でデータを送信するときに新しいユーザーを登録するために使用する UserRessource クラスがあります。
class UserResource(ModelResource):
class Meta:
allowed_methods = ['get', 'post']
queryset = User.objects.all()
resource_name = 'auth'
authentication = Authentication()
authorization = Authorization()
fields = ['username', 'email']
def obj_create(self, bundle, request=None, **kwargs):
username, email, password = bundle.data['username'], bundle.data['password'], bundle.data['password'],
try:
bundle.obj = User.objects.create_user(username, email, password)
except IntegrityError:
raise BadRequest('That username already exists')
return bundle
それは非常にうまく機能します。
しかし今、実際のログインプロセスに苦労しています。私の意見では、ユーザー名とパスワードを GET (および https) 経由でこのリソースに送信し、それらが有効な場合はユーザーの API キーを返すのが最善です。しかし、それは可能でしょうか?そしてそれはきれいですか?通常、TastyPie は、そのリソースに GET リクエストを送信すると、現在 DB にあるすべてのユーザーを表示します。しかし、そのデータは必要ないので、どうにか上書きできます。私はすでにhttp://django-tastypie.readthedocs.org/en/v0.9.9/resources.htmlをチェックしましたが、動作しません。その振る舞いを上書きすることさえ可能ですか?
したがって、実際の質問は、ApiKeyAuthentication を使用してユーザーを「サインイン」する最良の方法は何ですか? そして、私のアプローチは正しくてクリーンですか、それともより良い方法がありますか? この場合の例はありますか?
よろしくお願いします!