Im trying to attach a token to a logged in user:
user_info = request.get_json()
entered_username = User.query.filter_by(username = user_info['username']).first()
if user_info['password'] == entered_username.password:
token = jwt.encode({'username':entered_username, 'exp':datetime.datetime.utcnow() + datetime.timedelta(minutes=30)},
secret_key, algorithm='HS256').decode('UTF-8')
return jsonify(token)
But i get: TypeError: Object of type 'User' is not JSON serializable.
I've also tried to do return jsonify(token.decode('UTF-8'))
What am i missing?
You can't encode a User
object to JSON and entered_username
is a User
object. If you just want the username in your token, you can do something like this:
user_info = request.get_json()
user_obj = User.query.filter_by(username = user_info['username']).first()
if user_info['password'] == user_obj.password:
claims = {
'username': user_info['username'], # or perhaps user_obj.username
'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=30)
}
token = jwt.encode(claims, secret_key, algorithm='HS256')
# Maybe some error checking here?
response = {
'token': token.decode()
}
return jsonify(response)