Re: Django Rest Framework JWT - OperationalError: no such table: auth_user

2019-01-28 Thread El_merendero
Hi Arthur,
first of all, thanks for your reply, it seems to work. I'm using Django 
1.11.2 and in my settings.py I already had `django.contrib.auth` app in my 
`INSTALLED_APPS`. Anyway I tryed to ran the migrate command and now I don't 
get that Exception any more but an "User doesn't exist." error.

If is not a problem, I ask you another question: my final target is to 
verify a JWT without the username information. I'm documenting about 
"Django REST framework JWT" and I think that it only expects to receive a 
JWT with username (it has the user checker method indeed). Can you tell me 
if there is a configuration or a different tool to perform this target?

Thanks

-- 
You received this message because you are subscribed to the Google Groups 
"Django REST framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-rest-framework+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Django Rest Framework JWT - OperationalError: no such table: auth_user

2019-01-28 Thread Arthur Rio
Hi,

Given you are using python 2.7, I suppose that you are using Django < 1.11.
It seems like you either didn’t add the `django.contrib.auth` app to your
`INSTALLED_APPS` (
https://docs.djangoproject.com/en/1.11/topics/auth/#installation) or
haven’t ran the `./manage.py migrate` command.

Hope this help.

Regards


—
Arthur

On January 28, 2019 at 3:29:47 PM, El_merendero (carlopole...@gmail.com)
wrote:

Hi all,
I'm developing a Django application for Windows with Pyhton 2.7.15. I need
to implement an authentication mechanism with Django REST Framework JWT
 where I simply need
to verify a token (and not to generate it). The token's payload is
something like this:

{
  "iss": "customIssuer",
  "username": "customUser"
}

For this reason, I configure my setting.py in this way:

...

REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.TokenAuthentication'
),
}


JWT_AUTH = {
'JWT_ISSUER': 'customIssuer'
}


...

and my urls.py in this way:

...


from rest_framework_jwt.views import verify_jwt_token


urlpatterns = [
...
url(r'^api-token-verify/', verify_jwt_token),
...
]

Then, if I try to send a POST request with the above token, I get this
error:

Traceback (most recent call last):
  File
"C:\Software\Workspace\py2_env\lib\site-packages\django\core\handlers\exception.py"
, line 41, in inner
response = get_response(request)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\django\core\handlers\base.py"
, line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\django\core\handlers\base.py"
, line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\django\views\decorators\csrf.py"
, line 58, in wrapped_view
return view_func(*args, **kwargs)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\django\views\generic\base.py"
, line 68, in view
return self.dispatch(request, *args, **kwargs)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework\views.py",
line 489, in dispatch
response = self.handle_exception(exc)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework\views.py",
line 449, in handle_exception
self.raise_uncaught_exception(exc)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework\views.py",
line 486, in dispatch
response = handler(request, *args, **kwargs)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework_jwt\views.py"
, line 57, in post
if serializer.is_valid():
  File
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework\serializers.py"
, line 237, in is_valid
self._validated_data = self.run_validation(self.initial_data)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework\serializers.py"
, line 435, in run_validation
value = self.validate(value)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework_jwt\serializers.py"
, line 130, in validate
user = self._check_user(payload=payload)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework_jwt\serializers.py"
, line 109, in _check_user
user = User.objects.get_by_natural_key(username)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\django\contrib\auth\base_user.py"
, line 48, in get_by_natural_key
return self.get(**{self.model.USERNAME_FIELD: username})
  File
"C:\Software\Workspace\py2_env\lib\site-packages\django\db\models\manager.py"
, line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\django\db\models\query.py",
line 374, in get
num = len(clone)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\django\db\models\query.py",
line 232, in __len__
self._fetch_all()
  File
"C:\Software\Workspace\py2_env\lib\site-packages\django\db\models\query.py",
line 1105, in _fetch_all
self._result_cache = list(self._iterable_class(self))
  File
"C:\Software\Workspace\py2_env\lib\site-packages\django\db\models\query.py",
line 53, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch)
  File
"C:\Software\Workspace\py2_env\lib\site-packages\django\db\models\sql\compiler.py"
, line 886, in execute_sql
raise original_exception
OperationalError: no such table: auth_user

Checking the "rest framework jwt" package, I notice that this error is
throw by serializers.py. In particular from the check_user method:

def _check_user(self, payload):


username = jwt_get_username_from_payload(payload)


if not username:
msg = _('Invalid payload.')

Django Rest Framework JWT - OperationalError: no such table: auth_user

2019-01-28 Thread El_merendero
Hi all,
I'm developing a Django application for Windows with Pyhton 2.7.15. I need 
to implement an authentication mechanism with Django REST Framework JWT 
 where I simply need 
to verify a token (and not to generate it). The token's payload is 
something like this:

{
  "iss": "customIssuer",
  "username": "customUser"
}

For this reason, I configure my setting.py in this way:

...

REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.TokenAuthentication'
),
}


JWT_AUTH = {
'JWT_ISSUER': 'customIssuer'
}


...

and my urls.py in this way:

...


from rest_framework_jwt.views import verify_jwt_token


urlpatterns = [
...
url(r'^api-token-verify/', verify_jwt_token),
...
]

Then, if I try to send a POST request with the above token, I get this 
error:

Traceback (most recent call last):
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\django\core\handlers\exception.py"
, line 41, in inner
response = get_response(request)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\django\core\handlers\base.py"
, line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\django\core\handlers\base.py"
, line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\django\views\decorators\csrf.py"
, line 58, in wrapped_view
return view_func(*args, **kwargs)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\django\views\generic\base.py"
, line 68, in view
return self.dispatch(request, *args, **kwargs)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework\views.py", 
line 489, in dispatch
response = self.handle_exception(exc)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework\views.py", 
line 449, in handle_exception
self.raise_uncaught_exception(exc)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework\views.py", 
line 486, in dispatch
response = handler(request, *args, **kwargs)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework_jwt\views.py"
, line 57, in post
if serializer.is_valid():
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework\serializers.py"
, line 237, in is_valid
self._validated_data = self.run_validation(self.initial_data)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework\serializers.py"
, line 435, in run_validation
value = self.validate(value)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework_jwt\serializers.py"
, line 130, in validate
user = self._check_user(payload=payload)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\rest_framework_jwt\serializers.py"
, line 109, in _check_user
user = User.objects.get_by_natural_key(username)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\django\contrib\auth\base_user.py"
, line 48, in get_by_natural_key
return self.get(**{self.model.USERNAME_FIELD: username})
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\django\db\models\manager.py"
, line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\django\db\models\query.py", 
line 374, in get
num = len(clone)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\django\db\models\query.py", 
line 232, in __len__
self._fetch_all()
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\django\db\models\query.py", 
line 1105, in _fetch_all
self._result_cache = list(self._iterable_class(self))
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\django\db\models\query.py", 
line 53, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch)
  File 
"C:\Software\Workspace\py2_env\lib\site-packages\django\db\models\sql\compiler.py"
, line 886, in execute_sql
raise original_exception
OperationalError: no such table: auth_user

Checking the "rest framework jwt" package, I notice that this error is 
throw by serializers.py. In particular from the check_user method:

def _check_user(self, payload):


username = jwt_get_username_from_payload(payload)


if not username:
msg = _('Invalid payload.')
raise serializers.ValidationError(msg)


# Make sure user exists
try:
user = User.objects.get_by_natural_key(username) # <= 
ERROR
except User.DoesNotExist:
msg = _("User doesn't exist.")
raise serializers.ValidationError(msg)


if not user.is_active:
msg = _('User account is disabled.')
raise