Поэтому я пытаюсь интегрировать auth0 с моим существующим приложением django и базой данных sqlite. Вход в систему работает, проблема в том, что я не могу получить имена пользователей, введенные auth0 через запрос на сопоставление с моделями пользователей, уже присутствующими в моей базе данных.
Это серверная часть auth0, и сейчас я жестко запрограммирован, чтобы вернуть eq3 и 21 соответственно для имени пользователя и идентификатора пользователя.
def get_user_details(self, response):
# Obtain JWT and the keys to validate the signature
id_token = response.get('id_token')
jwks = request.urlopen('https://' + self.setting('DOMAIN') + '/.well-known/jwks.json')
issuer = 'https://' + self.setting('DOMAIN') + '/'
audience = self.setting('KEY') # CLIENT_ID
payload = jwt.decode(id_token, jwks.read(), algorithms=['RS256'], audience=audience, issuer=issuer)
return {'username': 'eq3',
'user_id': 21}
Однако, когда я захожу в views.py и помещаю print(request.user.username)
и print(request.user.id)
, он печатает eq306fa23456g204e8c
и 51
. Когда я захожу в свою базу данных, я вижу, что она действительно создала нового пользователя в таблице auth_user, даже если в этой таблице уже есть пользователь с eq3 и идентификатором пользователя 21. Кроме того, если я введу случайное имя пользователя, такое как foobar
, оно все равно создаст нового пользователя, но не добавит бессмысленную буквенно-цифровую строку к имени пользователя, просто foobar
. Что здесь происходит? Как я могу заставить django распознать, что имя пользователя eq3 уже есть в базе данных, и таким образом использовать его в качестве пользователя, из которого можно получить данные для приложения ??