我有这样的自定义用户模式: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文件和一些其他设置。 –