获取令牌身份验证视图时出现 Django REST HTTP 400 错误
Django REST HTTP 400 Error on Getting Token Authentication View
我想在后端使用 Django 和 Django-REST frameowrk 来验证本机 android 应用程序上的用户。我目前正在使用基于令牌的身份验证系统。 (More details)
我已经实施了指南中列出的完全相同的程序来设置令牌身份验证。
现在我希望我的用户能够获得令牌以换取凭据。我使用以下代码发出 POST 请求:
JSONObject cred = new JSONObject();
try {
cred.put("password",mPassword);
cred.put("username",mEmail);
} catch (JSONException e) {
e.printStackTrace();
}
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(Common.getServerUrl()+"/api-token-auth/");
StringEntity credentials = new StringEntity( cred.toString());
credentials.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
httpPost.setEntity(credentials);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
// Read content & Log
inputStream = httpEntity.getContent();
Log.i("Asynctask", cred .toString());
但是,当我 post 向我的 django 后端发送 "views.obtain_auth_token" 时,我总是出现此错误:
在服务器上:
"POST /api-toekn-auth/ HTTP/1.1 400"
回复我:
{"non_field_errors":["Unable to log in with provided credentials."]}
我想了解抛出此 HTTP 400(错误请求错误)的原因
当提供的登录凭据无效时出现此错误。
检查以下内容:
- 您的用户存在于数据库的auth_usertable中并且is_active字段设置为1?
- 您的密码正确吗?
- 您的用户在 authtoken_token table?.
中有令牌
一个常见的错误是,如果您使用 HyperlinkedModelSerializer 或 ModelSerializer,则在创建帐户时需要对密码进行编码
喜欢这个
class UserSerializer(serializers.HyperlinkedModelSerializer):
def create(self, validated_data):
user = User(
email=validated_data['email'],
username=validated_data['username']
)
user.set_password(validated_data['password'])
user.save()
return user
class Meta:
model = User
fields = ('url', 'username', 'password', 'email', 'groups')
extra_kwargs = {'password': {'write_only': True}}
我想在后端使用 Django 和 Django-REST frameowrk 来验证本机 android 应用程序上的用户。我目前正在使用基于令牌的身份验证系统。 (More details)
我已经实施了指南中列出的完全相同的程序来设置令牌身份验证。
现在我希望我的用户能够获得令牌以换取凭据。我使用以下代码发出 POST 请求:
JSONObject cred = new JSONObject();
try {
cred.put("password",mPassword);
cred.put("username",mEmail);
} catch (JSONException e) {
e.printStackTrace();
}
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(Common.getServerUrl()+"/api-token-auth/");
StringEntity credentials = new StringEntity( cred.toString());
credentials.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
httpPost.setEntity(credentials);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
// Read content & Log
inputStream = httpEntity.getContent();
Log.i("Asynctask", cred .toString());
但是,当我 post 向我的 django 后端发送 "views.obtain_auth_token" 时,我总是出现此错误:
在服务器上:
"POST /api-toekn-auth/ HTTP/1.1 400"
回复我:
{"non_field_errors":["Unable to log in with provided credentials."]}
我想了解抛出此 HTTP 400(错误请求错误)的原因
当提供的登录凭据无效时出现此错误。
检查以下内容:
- 您的用户存在于数据库的auth_usertable中并且is_active字段设置为1?
- 您的密码正确吗?
- 您的用户在 authtoken_token table?. 中有令牌
一个常见的错误是,如果您使用 HyperlinkedModelSerializer 或 ModelSerializer,则在创建帐户时需要对密码进行编码
喜欢这个
class UserSerializer(serializers.HyperlinkedModelSerializer):
def create(self, validated_data):
user = User(
email=validated_data['email'],
username=validated_data['username']
)
user.set_password(validated_data['password'])
user.save()
return user
class Meta:
model = User
fields = ('url', 'username', 'password', 'email', 'groups')
extra_kwargs = {'password': {'write_only': True}}