Python Django rest框架身份验证
我想在Django中创建身份验证。我正努力按照你的意愿去做每件事。 不幸的是,目前我有两个问题。首先,当我尝试从rest\u framework.authtoken导入视图添加Python Django rest框架身份验证,python,django,python-3.x,django-rest-framework,django-rest-auth,Python,Django,Python 3.x,Django Rest Framework,Django Rest Auth,我想在Django中创建身份验证。我正努力按照你的意愿去做每件事。 不幸的是,目前我有两个问题。首先,当我尝试从rest\u framework.authtoken导入视图添加时,我与公司导入视图中的冲突。我需要从authtoken到url的视图(r'^api token auth/',视图。获取\u auth\u token)。其次,当我使用/api-token-auth/时,我的问题是我只能登录超级用户,对于数据库中的其他用户,我会得到响应-“无法使用提供的凭据登录。” 使用as删除冲突 f
时,我与公司导入视图中的冲突。我需要从authtoken到url的视图(r'^api token auth/',视图。获取\u auth\u token)
。其次,当我使用/api-token-auth/
时,我的问题是我只能登录超级用户,对于数据库中的其他用户,我会得到响应-“无法使用提供的凭据登录。”
使用as删除冲突
from companies import views as companies_views
from rest_framework.authtoken import views as rest_auth_views
并在urlurl(r'^api令牌身份验证/',rest\u auth\u视图中使用它。获取\u auth\u令牌)
提供的详细信息不足以调试导致身份验证的原因。能否提供更多关于基于令牌的身份验证的代码
更新:
与OP通信后,他使用UserSerializer
创建了用户,并将密码保存为纯文本。身份验证不起作用
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'`
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
return user
您需要在settings.py
中的DEFAULT\u AUTHENTICATION\u类中包含TokenAuthentication
从文件来看
要使用TokenAuthentication方案,您需要将身份验证类配置为包含TokenAuthentication
所以像这样更改你的settings.py
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}
我只在url中添加了url(r'^api令牌auth/,视图。获取\u auth\u令牌)
。我认为这足够了,因为它是内置的。例如,我必须在我的视图中添加一些内容吗?@Wahtdbogh是的。你能包括关于Django restframwork的设置吗?好的。现在你的问题是什么?我看到您已经包括了基本身份验证和会话身份验证。它有效吗?我的问题是我只能登录超级用户,对于我数据库中的其他用户,我得到的响应是“无法使用提供的凭据登录”。好的,您是否尝试在settings.py文件中添加ToekenAuthentication
类。我添加了,但仍然存在相同的问题。您如何创建用户??通过管理网站??我已经解决了我的问题。我认为问题不是数据库中的加密密码,@RajaSimon帮助我在序列化程序中更改密码。
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}