Flask后端 Token的使用

Flask后端 Token的使用,第1张

Flask后端 Token的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

一、Token是什么?

二、使用步骤

1.引入库并配置token

2.登录返回token

3.请求验证token的装饰器

总结




一、Token是什么?

在计算机身份认证中是令牌(临时),在我的认知里面,token类似于打开后端的钥匙,在你登录之后,后端给你一串钥匙,你可以根据这串钥匙访问后端一些上锁的地方,如果没上锁,就是公共访问区域,没有token也能访问,有些地方上锁了你没钥匙,就是你的token里没有给你相对应的权限钥匙。


二、使用步骤

首先是创建一个token_core类。


1.引入库并配置token
from itsdangerous import TimedJSonWebSignatureSerializer as Serializer#导入
'''
这里的token_config.SECRET_KEY其实就是一段任意字符串
而expires_in是token的过期时间已秒为时间单位
'''
t = Serializer(token_config.SECRET_KEY, expires_in=2592000)#配置token



2.登录返回token
'''
登录产生token,参数根据自己需求添加,我这里只添加了用户名,其余暂定为空。
token本身应该还要包含角色权限
我这里是将token保存到redis数据库中
错误代码自定义
'''
#登录产生token
def login_token(userphone):
    user = {
        "userPhone": userphone,
        'userPermission': '',
        'userRole': '',
    }
    #存入redis
    try:
        //这里其实就是redis的hset 不过我因需求加了一重判断,所以封装成新的方法
        redisHset(n = userphone,k="token_userinfo",v=json.dumps(user))

    except:
        //output就是封装好的response
            return output( msg='token产生错误',code="20003")
    
    return t.dumps(user).decode('utf-8')

3.请求验证token的装饰器
#验证token是否登录
def login_required(func):
    @wraps(func)
    def verify_token(*args,**kwargs):
        try:
            #前端需要把token放在请求的header里面,然后后端在请求头上拿到token
            token = request.headers["userToken"]
        except Exception:
            #获取不到就返回 token空错误
            return output(msg = 'token为空',code="20001")
        #解析token,若token解析成功但是时间过期了则返回token过期
        try:
            a = t.loads(token)

        except Exception:
            return output(msg = "token已经过期",code="20002")
        #解析token成功且未过期,则验证是否存在redis内,若存在则允许执行,否则返回非法访问
        #get_userinfo是我再封装的redis的get方法

        if get_userinfo(a['userPhone'],'token_userinfo') is None:

            return output(msg="非法访问",code='20004')

        return func(*args,**kwargs)

    return verify_token


总结

这里只是简单的token获取和验证,后面还需要有权限的验证等

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4827716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-10
下一篇 2022-11-10

发表评论

登录后才能评论

评论列表(0条)

保存