Releases: vimalloc/flask-jwt-extended
3.19.0
3.18.2
3.18.1
3.18.0
- Add the ability to dynamically set user claims via the new user_claimsargument tocreate_access_tokenandcreate_refresh_tokenfunctions (#229). Thanks @jeanphix
- Add ability to use other datetime libraries for the token expiration configuration options. Anything that works with datetime.datetime(such asdateutil) will now work with extension (#233). Thanks @abathur
3.17.0
3.16.0
This release changes how the  @jwt.expired_token_loader callback function works. Before this release the callback function took no arguments. Now it will take one argument which is the decoded contents of the expired token. This lets you customize the expired token callback based on the token that was received. For example:
# Old way
@jwt.expired_token_loader
def old_expired_callback():
    return jsonify(foo='bar'), 401
# New way
@jwt.expired_token_loader
def new_expired_callback(expired_token):
    if expired_token['type'] == 'access':
        return jsonify(foo='bar'), 401
    else:
        return jsonify(foo='baz'), 401The old way will still work, updating to this version will not break your software out from under you. You will however receive a deprecation warning when using that way. To fix this, simply add an addition argument to your callback function for the expired token.
3.15.0
3.14.0
In this release we are modifying how decoded tokens work, so that this extension can be more easily used by other JWT providers (#212). The important changes in this release are:
- added the JWT_DECODE_AUDIENCEconfiguration option, for using theaudclaim in JWTs
- Change the decode_key_callback()function to now take the unverified headers as well as the unverified claims as arguments. If you have existing code that only takes one argument, it will still work, but you will see a depreciation warning when it is called. You should update your callback to take a second parameter to fix that. As an exampledecode_key(claims)would becomedecode_key(claims, headers).
- If the jticlaim doesn't exist in a token, it will now be set toNonein the decoded dictionary instead of raising an error
- If the typeclaim doesn't exist in a token, it will be marked as an access token and'type': 'access'will be set in the decoded dictionary
- If the freshclaim doesn't exist in a token, it will be marked as a non-fresh token and'fresh': Falsewill be set in the decoded dictionary
Many thanks to @acrossen for making this release possible!
3.13.1
3.13.0
- Add support for custom encode and decode keys (#91). There are now two new callbacks that can be registered: decode_key_loaderandencode_key_loader. The decode callback is passed in the unverified JWT claims, and must return a string that will be used to decode and verify the JWT. The encode callback is passed in the identity (as passed in to thecreate_access_tokenorcreate_refresh_tokenfunctions) and must return a string that will be used to encode a JWT. If unset, theJWT_SECRET_KEY,JWT_PUBLIC_KEY, orJWT_PRIVATE_KEYwill still be used as appropriate.