いつもお世話になります。 Django 1.6と Python2.7を使用して開発を行っています。
Webブラウザだけでのログインはできるのですが、 モバイルのネイティブアプリケーションからのログインがうまく行きません。 urls.pyには以下のように記載させており、viewについてはDjangoの基本機能に任せております。 url(r'^accounts/login/$', 'django.contrib.auth.views.login', name='login1'), https://github.com/django/django/blob/master/django/contrib/auth/views.py#L29-L32 のように、csrfのデコレータも付いているためcsrfについては問題はなさそうに見えます。 ネイティブアプリケーションからはPOSTするだけなので、 このページ自体が呼ばれることはないかもしれませんが、 テンプレートをオーバーライドしておりブラウザ版では使用しています。 以下が、 /registration/login.html のテンプレートのスニペットとなりますが、 csrf_tokenのタグも含まれています。 <body style="margin-top: 5em;"> <div class="container"> <form method="POST" action=".">{% csrf_token %} <div class="modal" style="position: relative; top: auto; left: auto; margin: 0 auto; z-index:1;"> <div class="modal-header"> ネイティブのクライアントでcsrfのトークンキーを取得させるために、 def get_token(request): """ csrfトークンをとる """ context = {} context.update(csrf(request)) from django.utils.encoding import force_text context['csrf_token'] = force_text(context['csrf_token']) print context return HttpResponse(json.dumps(context), content_type="application/json") ネイティブのクライアントのから、このようなviewにGETでアクセスさせてから これを、csrfmiddlewaretokenをキーとして csrfmiddlewaretoken username password のパラメータをPOSTしております。 しかしながら、403 FORBIDDEN が発生しました。 この解決方法はありますでしょうか? そもそも、今のやり方で正しいのでしょうか? また、今後ログインが成功したあとは、 views側でrequest.usernameなどを使っているため、 ユーザ名をクライアントからも取得できるようにしたいと思っております。 ご教示お願い致します。 何卒、よろしくお願いします。 -- -- ----------------- http://djangoproject.jp/ ----------------- You received this message because you are subscribed to the Google Groups "django-ja" group. To post to this group, send email to django-ja@googlegroups.com To unsubscribe from this group, send email to django-ja-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-ja --- このメールは Google グループのグループ「django-ja」の登録者に送られています。 このグループから退会し、グループからのメールの配信を停止するには django-ja+unsubscr...@googlegroups.com にメールを送信してください。 その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。