首页 > 编程语言 >python+flask_restful使用jwt

python+flask_restful使用jwt

时间:2024-01-20 17:55:52浏览次数:37  
标签:get python jwt email flask token restful page

正在做毕设,由于毕设需求使用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实战

 

标签:get,python,jwt,email,flask,token,restful,page
From: https://www.cnblogs.com/jzz-111jy/p/17976859

相关文章

  • Python实现线性判别分析鸢尾花数据集或随机生成两个线性可分的数据集
    线性判别分析是一种经典的线性学习方法,在二分类问题上最早由Fisher在1936年提出,亦称Fisher线性判别。线性判别的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的直线上,再根据......
  • Python中的回调函数
    先来看一个程序:deff1():print(2)return1deff2(a):print(3)returnaprint(f2(f1()))这个程序,在调用时,f2会先等待f1调用完毕,返回1之后,再进行调用,所以会输出2、3、1,但是若这样改写程序deff1():print(2)return1deff2(f):prin......
  • 【Python】查找和删除表格中的重复行
    查找:importpandasaspddf=pd.read_excel("秘籍.xlsx")#打开list1=[]foriinrange(df.shape[0]):#总行数list1.append(list(df.values[i]))#将每行以列表的形式装入列表forxinlist1:iflist1.count(x)>1:#如果列表中元素出现次数>1prin......
  • Python手相识别教程10命运线
    10命运线土星线是手相中信息量最大的线条之一。它记录了工作和生活方式的重大变化,描述了我们在人生不同阶段的安全感。这条线有很多名字:命运线、命运线,以及最贴切的安全线。命运线反映了货币安全,但这并不是土星线上显示的唯一一种安全。这条线的标记和特征可能是客观的,也可能......
  • pythonUI自动化之selenium获取浏览器接口信息
    #导入Selenium库中的Chrome驱动和DesiredCapabilities类fromselenium.webdriverimportChrome,DesiredCapabilities#导入Chrome驱动的特定选项类fromselenium.webdriver.chrome.optionsimportOptions#这是主程序的入口点,只有当该文件被直接运行时,以下的......
  • 基于flask框架的python作为微信小程序后端的实现方法(个人版)
    Flask基础语法引入Flask类fromflaskimportFlask创建一个app,也就是Flask类的一个对象app=Flask(__name__)接下来写每个路径对应的函数如@app.route('/')deftest()#这里函数可以任意命名,这个函数会在访问括号里路径的时候被调用 return"helloworld"这三行代码......
  • Python自动化办公的实际需求——把Excel里面的数字改成对应的成绩档次,优良中差四挡(上
    大家好,我是皮皮。一、前言前几天在Python白银交流群【瑜亮老师】分享了一个小需求,给大家练练手。问题如下:成绩表中有3个sheet,大体上题目是从易到难。要求:把里面的数字改成对应的成绩档次,优良中差四挡。4个档次:100分为“优”,80-99分为“良”,60-79分为“中”,60分以下为“差”。要......
  • 用python提取excel表格第一列汉字首字母到第二列
    今天有个任务就是需要提取excel表格里面的汉字首字母,然后我就手动写了三个小时,结果还剩3000多行,这样下去不行啊想了下用python能不能做到呢?importopenpyxlfrompypinyinimportlazy_pinyin,Style#加载工作簿workbook=openpyxl.load_workbook('hanzi.xlsx')#选择......
  • python之字典
    字典详解                           1.cleardefclear(self):#realsignatureunknown;restoredfrom__doc__"""D.clear()->None.RemoveallitemsfromD."""pass翻译:删除字典元素1#!/usr/bin/pyt......
  • 2024年最新的Python操控微信教程
    自从微信禁止网页版登陆之后,itchat库实现的功能也就都不能用了,那现在Python还能操作微信吗?答案是:可以!在Github上有一个项目叫《WeChatPYAPI》可以使用Python对微信进行操控。简单来说,它是通过逆向PC端微信来实现对微信的操控,使用Python封装后调用更加简单!Github地址:https:/......