Flask实现强制登录

本文介绍了如何在项目开发中实现登录功能,利用JWT(JSON Web Tokens)生成和验证用户身份Token。在用户登录时,服务器生成包含用户信息的Token,然后在后续请求中通过验证Token来确认用户已登录。主要步骤包括:1) 生成Token;2) 登录时写入用户信息;3) 验证Token;4) 判断用户是否登录。通过这种方式,可以确保只有经过身份验证的用户才能访问受保护的资源。
摘要由CSDN通过智能技术生成

当我们在开发项目的时候,很多时候一些功能需要登录后才能实现

#思路

在登录时生成一个token,通过验证token来确定是否登录

1.生成token

def generate_jwt(payload, expire, algorithms='HS256'):
    key = current_app.config.get('SERCRET_KEY')

    if 'expire' not in payload:
        payload['expire'] = str(expire)

    try:
        token = jwt.encode(payload, key, algorithms)
        return token
    except Exception as e:
        print('generate_token err', e)
        return e

2.在登录时将用户信息写入token

 3.验证token



from flask import request, g
from util.jwt_util import check_token

def check_token(token):
    key = current_app.config.get('SERCRET_KEY')
    payload = jwt.decode(token, key, algorithms='HS256')
    return payload


def jwt_authorization():
    token = request.headers.get('Authorization')
    if token:
        payload = check_token(token)
        print('auth payload--->', payload)
        if payload:
            # token 校验成功,把用户id写入g对象
            g.user_id = payload.get('id')
            print('g.user_id', g.user_id)

4.通过判断g对象中是否有用户id判断是否登录

from flask import g
from functools import wraps


def login_required(func):
    """强制登录"""

    @wraps(func)
    def wrapper(*args, **kwargs):
        # 在视图函数之情前判断是否登录
        print('uid--->', g.user_id)
        if g.user_id:
            return func(*args, **kwargs)
        else:
            # 没有登录
            return {'message': '请先登录'}, 401

    return wrapper

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值