このカスタム ユーザー モデルがあります。
class CustomUser(AbstractBaseUser,PermissionsMixin):
email = models.CharField(max_length=255, unique=True)
....
そして、実行するために認証を要求すると思われるこのビュー:
@authentication_classes((TokenAuthentication,))
@permission_classes((IsAuthenticated,))
def test_view(request):
return HttpResponse("Allowed")
この URL を起動すると、認証ヘッダーに資格情報を提供するかどうかに関係なく、常に実行されます。request.user オブジェクトには AnonymousUser インスタンスが含まれているため、残りのフレームワークは django のデフォルトのユーザー モデルを使用していると思います。しかし、データベースを確認したところ、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'),
...
)