flask-jwt用法感悟

Flask-JWT的使用感悟

为什么用?

随着前后端分离,csrf防护也变得困难,使用jwt可以方便csrf,也可以方便设计系统的单点登录。

安装

pip install Flask-JWT

源码地址

git clone https://github.com/mattupstate/flask-jwt.git ./flask-jwt
pip install ./flask-jwt

官方案例

from flask import Flask
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 = Flask(name)
app.debug = True
app.config['SECRET_KEY'] = 'super-secret'

jwt = JWT(app, authenticate, identity)

@app.route('/protected')
@jwt_required()
def protected():
return '%s' % current_identity

if name == 'main':
app.run()

posted @ 2020-04-26 20:59  Barry东东和西西  阅读(1465)  评论(0)    收藏  举报