Comments (5)
Tests pass on Django 3.2 (see 32fdc0e).
Could you please provide :
- the complete stack trace of the exception
- the value of the
DEFAULT_AUTO_FIELD
andSESAME_PACKER
settings (if they're defined) - the output of
from django.contrib.auth import get_user_model; get_user_model()._meta.pk.get_internal_type()
from django-sesame.
Hello,
- Complete stack
Traceback (most recent call last):
File "/projects/p1/.env/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/projects/p1/.env/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/projects/p1/app/views.py", line 100, in SetupUserView
profile_url = generate_token_url(request, user, scope, serial_id)
File "/projects/p1/app/utils.py", line 23, in generate_token_url
token_url += get_query_string(user, scope=scope)
File "/projects/p1/.env/lib/python3.8/site-packages/sesame/utils.py", line 25, in get_query_string
return "?" + urlencode(get_parameters(user, scope))
File "/projects/p1/.env/lib/python3.8/site-packages/sesame/utils.py", line 17, in get_parameters
return {settings.TOKEN_NAME: get_token(user, scope)}
File "/projects/p1/.env/lib/python3.8/site-packages/sesame/tokens.py", line 16, in create_token
return tokens.create_token(user, scope)
File "/projects/p1/.env/lib/python3.8/site-packages/sesame/tokens_v2.py", line 129, in create_token
primary_key = packers.packer.pack_pk(user.pk)
File "/projects/p1/.env/lib/python3.8/site-packages/sesame/packers.py", line 59, in pack_pk
return struct.pack(cls.fmt, user_pk)
struct.error: required argument is not an integer
- DEFAULT_AUTO_FIELD = 'hashid_field.BigHashidAutoField' from https://github.com/nshafer/django-hashid-field (django-hashid-field==3.2.1)
SESAME_PACKER not defined - The output is 'BigAutoField'
Going back to Django 3.1.8, everything works correctly (the development started in an earlier version, I really got the problem when upgrading to Django 3.2).
from django-sesame.
Hello,
Just found the error, I need to define the
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
djang-sesame was not able to get user_pk because it was getting a Hashid object.
from django-sesame.
Maybe django-hashid-field has a different behavior on Django 3.2?
Anyway, the problem is that django-hashid-field's BigHashidAutoField pretends that it's native BigAutoField: https://github.com/nshafer/django-hashid-field/blob/cc0287119b1093015816954bf3e5dca21a44b8ec/hashid_field/field.py#L184-L185
But it's quite different: unlike BigAutoField
its value cannot be used as an int
, which trips django-sesame.
Forcing BigAutoField
solves the problem but you may be losing behaviors that you expect from django-hashid-field.
If you want to use BigHashidAutoField
, you can set SESAME_PACKER
to something appropriate for the underlying type, maybe sesame.packers.StrPacker
.
from django-sesame.
Thanks for the hints.
Actually my user model is a custom one (it extends AbstractUser), but it doesn't have a hashid-field.
The BigHashidAutoField is used in another model, but I suppose django-sesame was using the DEFAULT_AUTO_FIELD setting.
from django-sesame.
Related Issues (20)
- struct.pack error creating token using custom User model with UUID as pk HOT 1
- Feature: Enforce same session link usage HOT 3
- Documentation: clarify dynamic max_age is ignored with SESAME_MAX_AGE = None (the default) HOT 2
- Discussion: what is the benefit of going through the authentication backend system? HOT 4
- Non existent user ID returned / Security concerns HOT 3
- Authenticate a view without user HOT 2
- Django admin does not log in after adding Middleware HOT 10
- Rename master branch to main HOT 1
- sesame tokens seem to be missing a bunch of entropy on my Django installation (first characters are all 'AAAAAA' HOT 3
- Login view request HOT 11
- Is ModelBackend actually needed? HOT 2
- Expired Token: enhance user journey HOT 2
- Support changing signature length HOT 1
- Add support for SECRET_KEY_FALLBACKS
- Typo in tutorial for Login by email
- Deprecated dependencies HOT 2
- minimum ua parser version HOT 2
- SESAME_PRIMARY_KEY_FIELD=uuid does not allow login HOT 2
- Add an option to invalidate magic links on email change HOT 4
- override_settings doesn't update sesame settings HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from django-sesame.