在已經使用django.contrib.auth
進行身份驗證的Web應用程序限制訪問阿賈克斯服務,我在尋找的「標準」的方式限制到只有經過身份驗證的用戶訪問的Ajax服務。使用django.contrib.auth
使用@login_required
裝飾不會做,因爲那只是重定向未授權的用戶登錄頁面。對於服務,我們應該發回一個有效的,格式良好的錯誤響應 - 而不是一些登錄表單。
這是我想到的第一種方法:
from django.http import HttpResponse
def some_json_service_view(request):
if not request.user.is_authenticated():
return HttpResponse('{success: false}')
return HttpResponse('{success: true}')
把它更遠一步,如果我能爲所有「未通過身份驗證」錯誤的單一響應標準化,然後一個裝飾將是不錯:
from django.http import HttpResponse
def login_required_json(f):
def new_f(request):
if not request.user.is_authenticated():
return HttpResponse('{success: false}')
return f(request)
return new_f
@login_required_json
def some_json_service_view(request):
return HttpResponse('{success: true}')
這是人人都這麼做的,還是有一種更爲接受的方式呢?理想情況下,有人可以指向我爲此設計的django.contrib
包。
感謝您的回覆,菲利普。獲得支持意見總是很好的: - 我打算讓這個話題公開幾天,看看我們是否有任何相反的觀點。我只處理*我的*前端訪問服務,但我喜歡公共與私人服務之間的區別。 'django-piston'看起來非常有用,特別是如果你正在編寫RESTful接口。 – 2011-03-09 21:24:50