您的位置 首页 教育

Flask实现强制登录

当我们在开发项目的时候,很多时候一些功能需要登录后才能实现 #思路 在登录时生成一个token,通过验证tok…

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

#思路

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

本文来自网络,不代表0514资讯网立场,转载请注明出处:https://0514zx.com/info/6348.html
0514zx.com

作者: 0514zx.com

优质职场领域创作者
联系我们

联系我们

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部