2

私は自分のdjangoWebサイトの1つにアクセスするためのモバイルアプリを開発してきました。TastyPieを使用してRESTfulAPIを実行し、JQMobileを使用してフロントエンドを開発しました。ユーザーをログに記録し、ログインしたユーザーにアクセスしたい部分に到達しました。

私はたくさんの読書と検索をしましたが、それでも最善のアプローチが何であるかは本当にわかりません。理想的には、ユーザー名とパスワードを使用してユーザーにログインし、このユーザーでAPIから返されたデータの一部をフィルター処理したいと思います(これはTastyPieのドキュメントから実行できます)。

他の人々は、JQMobileとDjangoを使用してユーザーの認証にどのようにアプローチしましたか。PhoneGapも使用しているので、必要に応じて、ログインから返されたユーザー情報をローカルストレージに保存できます。しかし、モバイルユーザーがアプリを使用しているときに、django側でrequest.userを利用できるようにするために、すべてを一緒にコーディングする方法がよくわかりません。

これまでのところ、ユーザーのサインインに関するTastyPie側のUserResourceの別の投稿からこれを思いついたのですが、ユーザーがサインインした後の対処方法がわかりません。

class UserResource(ModelResource):
    class Meta:
        queryset = User.objects.all()
        resource_name = 'user'
        list_allowed_methods = ['get', 'post']

    def override_urls(self):
        return [
            url(r"^(?P<resource_name>%s)/signin%s$" %
                (self._meta.resource_name, trailing_slash()),
                self.wrap_view('signin'), name="api_signin"),
        ]

    def signin(self, request, **kwargs):
        self.method_check(request, allowed=['post'])

        # Per https://docs.djangoproject.com/en/1.3/topics/auth/#django.contrib.auth.login...
        username = request.GET['username']
        password = request.GET['password']
        user = authenticate(username=username, password=password)

        if user is not None:
            if user.is_active:
                login(request, user)
                return self.create_response(request, {'success': True})
            else:
                # Return a 'disabled account' error message
                return self.create_response(request, {'success': False})
        else:
            # Return an 'invalid login' error message.
            return self.create_response(request, {'success': False})

誰かが共有できるコード、またはユーザーにログインして状態を維持する方法の指針を持っていますか?

乾杯、ベン

4

1 に答える 1

1

Phonegapは、実際にはいくつかのネイティブコードでラップされた単なるブラウザーです。つまり、通常のWebブラウザーと同じようにセッションを永続化する手段があります(Cookie)。

バックエンドAPIに送信されるすべてのajaxリクエストにはsessionid、通常のリクエストと同じようにCookieを含めることができますGET。オブジェクトは、requst.userビューで使用できるようになります。

特別なものを構築したり、そのためにlocalstorageを使用したりする必要はありません。確認する唯一のことは、アプリがドメインにアクセスできるようにドメインがホワイトリストに登録されていることです。

于 2012-11-26T11:44:12.653 に答える