我有這樣的自定義用戶模式:Django的REST框架不驗證自定義用戶模型
class CustomUser(AbstractBaseUser,PermissionsMixin):
email = models.CharField(max_length=255, unique=True)
....
這種觀點是supossed需要身份驗證才能運行:
@authentication_classes((TokenAuthentication,))
@permission_classes((IsAuthenticated,))
def test_view(request):
return HttpResponse("Allowed")
當我啓動網址爲此,它將始終運行,無論我是否在我的授權標頭中提供憑證。我的猜測是rest框架使用django的默認用戶模型,因爲request.user對象包含一個AnonymousUser實例。但是我檢查了數據庫,並且authtoken表引用了我的自定義用戶表。
我認爲這應該和我的代碼一樣簡單,但我想我錯過了一些東西。有任何想法嗎?
編輯:這裏有更多的細節:
settings.py:
INSTALLED_APPS = (
'myapps',
...
'django.contrib.auth', #should this be enabled?
...
'rest_framework.authtoken'
)
...
#I think this is unnecesary since i use per-view decorators, but...
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
)
}
AUTH_USER_MODEL = 'users.CustomUser'
urls.py:
urlpatterns = patterns('',
...
url(r'^test', test_view, name='test'),
...
)
有你在您的settings.py文件中將'AUTH_USER_MODEL'設置爲您的自定義用戶模型?並且還會顯示您正在嘗試請求的「urls」和網址。 –
Anush是我的AUTH_USER_MODEL已設置。我添加了url文件和一些其他設置。 –