Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import Flask
- from flask_restful import Resource, Api, abort
- from functools import wraps
- from flask_cors import CORS, cross_origin
- app = Flask(__name__)
- api = Api(app)
- CORS(app)
- from flask_jwt import JWT, jwt_required, current_identity
- from werkzeug.security import safe_str_cmp
- class User(object):
- def __init__(self, id, username, password):
- self.id = id
- self.username = username
- self.password = password
- def __str__(self):
- return "User(id='%s')" % self.id
- users = [
- User(1, 'user1', 'abcxyz'),
- User(2, 'user2', 'abcxyz'),
- ]
- username_table = {u.username: u for u in users}
- userid_table = {u.id: u for u in users}
- def authenticate(username, password):
- user = username_table.get(username, None)
- if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')):
- return user
- def identity(payload):
- user_id = payload['identity']
- return userid_table.get(user_id, None)
- app.config['SECRET_KEY'] = '32rfwdscsacsdcsad'
- jwt = JWT(app, authenticate, identity)
- def checkuser(func):
- @wraps(func)
- def wrapper(*args, **kwargs):
- if current_identity.username == 'user1':
- return func(*args, **kwargs)
- return abort(401)
- return wrapper
- class HelloWorld(Resource):
- decorators = [checkuser, jwt_required()]
- def get(self):
- return {'hello': current_identity.username}
- api.add_resource(HelloWorld, '/')
- if __name__ == '__main__':
- app.run(debug=True,host='localhost', port=80)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement