栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Flask实现强制登录

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flask实现强制登录

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

#思路

在登录时生成一个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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/961433.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号