Flask 强制登录

1. 为什么要强制登录!

在一个项目中,有很多信息都是根据用户在项目中操作得来的,比如:添加到购物车的商品,生成的订单,收藏的商品,发表的文章等等,都是用户的信息,每个用户和用户都是不一样的。所以强制登录可以更好的区别用户用户之间的信息不同

2. 强制登录的思路

在每次请求之前都要检测用户是否登录,如果没有登录就重新登录。已经登录了就根据token得出用户的信息

3. 强制登录的实现

在app.py文件下写一个请求前的都会执行的全局钩子函数来获取token判断token是否存在或过期,同时通过g对象来获取用户的id信息

@app.before_request
def gz():
    print("我是钩子函数")
    req = reqparse.RequestParser()
    req.add_argument("token",locations="headers")
    args = req.parse_args()
    if not args["token"]:
        uid = 0
    else:
        payload = JwtTool().valid_jwt(args["token"])
        if not payload:
            uid = 0
        else:
            uid = payload["uid"]

    g.uid = u

封装一个检验是否登录的装饰器

from flask import jsonify, g

def login(func):
    def warpper(*args,**kwargs):
        # 判断用户必须登录,如果没有登录,
        if g.uid == 0:
            return jsonify({
                "code": 403,
                "msg": "用户未登录"
            })

        return func(*args,**kwargs)
    return warpper()

在获取用户信息的时候使用该装饰器,获取用户的信息

class InfoView(Resource):
    @login
    def get(self):
        uid = g.uid
        user_info = UserModel.query.get(uid)
        if not user_info:
            return jsonify({
                "code": 403,
                "msg": "用户未登录"
            })
        return jsonify({
            "code": 200,
            "msg": "用户信息获取成功",
            "data": {
                "username": user_info.username,
                "img": user_info.img
            }
        })
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值