码迷,mamicode.com
首页 > 其他好文 > 详细

flask_jwt 用户认证

时间:2019-01-08 19:28:48      阅读:446      评论:0      收藏:0      [点我收藏+]

标签:val   ret   common   sel   fail   ack   find   conf   pos   

from config.config import jwt
from flask import jsonify
from flask_jwt_extended import get_jwt_identity, jwt_required, get_raw_jwt,jwt_optional
from common.ReturnMessage import returnNoneMsg
from flask import request
from functools import wraps
from models.User import User
import types
from sqlalchemy import or_
#必选登录用户
def user_require(fn):
@jwt_required
@wraps(fn)
def _deco():
if type(request.json) != types.DictType:
resultDict = returnNoneMsg("failed!")
return jsonify(resultDict)
userId = get_jwt_identity()
if not userId:
resultDict = returnNoneMsg("not find userId!")
return jsonify(resultDict)
userTable = User.query.filter(User.id==userId,
or_(User.is_lock == 1,User.is_lock == 2)).first()
postJwt = get_raw_jwt()
postCounselorToken = postJwt.get("jti")
if userTable:
userToken = userTable.access_token
if userToken == postCounselorToken:
return fn()
else:
resultDict = returnNoneMsg("this user not exit!")
else:
resultDict = returnNoneMsg("this user not exit!")
return jsonify(resultDict)
return _deco

#用户既可登陆也不登录
def user_or_require(fn):
@jwt_optional
@wraps(fn)
def _deco():
if type(request.json) != types.DictType:
resultDict = returnNoneMsg("failed!")
return jsonify(resultDict)
userId = get_jwt_identity()
if userId:
userTable = User.query.filter(User.id == userId,
or_(User.is_lock == 1,User.is_lock == 2)).first()
postJwt = get_raw_jwt()
postCounselorToken = postJwt.get("jti")
if userTable:
userToken = userTable.access_token
if userToken == postCounselorToken:
return fn()
else:
resultDict = returnNoneMsg("the token not mach with sql!")
else:
resultDict = returnNoneMsg("this user not exit!")
return jsonify(resultDict)
else :
return fn()
return _deco


@jwt.invalid_token_loader
@jwt.unauthorized_loader
def my_unauthorized_loader(identy):
dictInfo = "The has no token: %s" % identy
resultDict = returnNoneMsg(dictInfo)
return jsonify(resultDict)

@jwt.expired_token_loader
def my_expired_token_callback():
returnInfo = returnNoneMsg("the token expired!")
return jsonify(returnInfo)



# 访问受保护端口 会调用此函数
@jwt.user_loader_callback_loader

# 认证失败 自动调用此函数
@jwt.user_loader_error_loader

flask_jwt 用户认证

标签:val   ret   common   sel   fail   ack   find   conf   pos   

原文地址:https://www.cnblogs.com/alextd/p/10240389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!