随笔 - 217  文章 - 4  评论 - 4  阅读 - 23587

python+flask_restful使用jwt

正在做毕设,由于毕设需求使用python+flask,使用jwt目的是对请求进行保护,我的项目采用vue3+flask前后端分离实现,进入正题:

使用jwt,首先下载扩展

pip install Flask-JWT-Extended

然后在项目中注册使用,我的项目结构是这样的

 在exts.py中引入jwt扩展,

from flask_jwt_extended import create_access_token,get_jwt_identity,jwt_required,JWTManager

jwt = JWTManager()


def init_ext(app):
    jwt.init_app(app)

在__init__.py中设置密钥

app.config["JWT_SECRET_KEY"] = "super-secret"
# 初始化插件扩展
init_ext(app)

apis.py 中用来写方法,urls中用来写路由,方便前端使用

apis.py中的登录

复制代码
class Login(Resource):
    @marshal_with(login_fields)
    def post(self):
        data = request.get_json()
        email = data.get('email')
        password = data.get('password')
        u = User.query.filter_by(email=email).first()
        access_token = create_access_token(identity=email)
        if password == u.password:
            return {
                "code":200,
                "msg":"success",
                "data":u,
                "token":access_token #登录成功会返回token
            }
        else:
            return {
                "code":201,
                "msg":"fail"
            }
复制代码

使用ApiPost进行测试

 完成之后,在另一请求上获取token,参数名为Authorization

复制代码
class UserResource(Resource):
    method_decorators = [jwt_required()]
    @marshal_with(res_fields)
    def get(self):
        current_user = get_jwt_identity()
        if current_user is None:
            return jsonify("Not Authorized"),401
        curr_page = int(request.args.get('curr_page', 1))
        page_size = int(request.args.get('page_size', 5))
        name = request.args.get('name',None)
        p = User.query.filter(User.name.like('%' + name + '%')).paginate(page=curr_page, per_page=page_size)
        return {
            'code': 200,
            'msg': 'success',
            'data': p.items,
            'curr_page': p.page,
            'page_size': p.per_page,
            'total': p.total
        }
复制代码

再次进行测试,

不携带token会出现

携带token会出现 

 

 这时需要在Authorization的参数值前方加入"Bearer "

 参考文章:flask实战

 

posted on   跨越&尘世  阅读(152)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示