A Python implementation of acquiring, authorizing user from jwt token. designed to work for any request entity from flask,django,tornado frameworks.
Install with pip:
$ pip install jwt_user
>>> import jwt_user
>>> payload = {'username': 'test'}
>>> token = jwt_user.generate_token(payload)
>>> request = jwt_user.generate_request(token)
>>> user = jwt_user.get_jwt_user(request)
>>> user
{}
>>> user.username
'test'
>>> #Second usage
...
>>> import tornado
>>> BaseRequestHandler = tornado.web.RequestHandler
>>> class MainHandler(BaseRequestHandler):
... @jwt_user.authorized_user
... def get(self):
... self.write('Hello, Authorized user')
...
>>> class MainUserHandler(BaseRequestHandler):
... @jwt_user.authorized_user
... def get(self):
... user = jwt_user.get_jwt_user(self.request)
... self.write('Hello, {}'.format(user.username))
>>>
>>> os.environ['JWT_EXPIRATION_DELTA'] = '3400'
>>> os.environ['JWT_PRIVATE_KEY'] = 'some random hexa private text'
>>> os.environ['JWT_SECRET_KEY'] = 'some random hexa secret text'
>>> os.environ['JWT_AUTH_HEADER'] = 'Authorization'
>>> os.environ['JWT_AUTH_HEADER_PREFIX'] = 'Bearer'
>>> def make_app():
... user_valid_fields = {'username', 'user_id', 'token'}
... jwt_user.set_user_valid_fields(user_valid_fields)
... application = tornado.web.Application([
... (r'/', MainHandler),
... (r'/user_page', MainUserHandler)])
... return application
>>>
],
View the full docs online at https://jwt_user.readthedocs.io/en/latest/
You can run tests from the project root after cloning with:
$ make smoke