文章目录
昨日回顾
- JWS三部分都是什么? 如何得来的?
- pyjwt模块的核心方法是什么?
- 请求钩子有哪些? 都在什么时候执行?
今日内容
- 强制登录
- 更新 token
- JWT禁用
- 对象存储
- 七牛云使用介绍
1. 强制登录
1.1 装饰器
- 普通函数与被装饰的函数的名称
# 函数名的打印
def func():
print('func执行了')
print('函数名为: {}'.format(func.__name__)) # func
# 被装饰函数的函数名
def outer(func):
def wrapper(*args, **kwargs):
print('代码块1')
func(*args, **kwargs)
print('代码块2')
return wrapper
@outer
def func():
print('func执行了')
print('函数名为: {}'.format(func.__name__)) # wrapper
此时,被装饰的函数的名称已发生改变,如何保证func函数的名称不变
?
- 函数名修复
from functools import wraps
def outer(func):
@wraps(func)
def wrapper(*args, **kwargs):
print('代码块1')
func(*args, **kwargs)
print('代码块2')
return wrapper
# 装饰
@outer
def func():
print('func执行了')
# 函数执行
func()
print('函数名为: {}'.format(func.__name__))
1.2 强制登录
在开发中,部分接口是要求用户登录才能访问的,所以有强制登录的需求。
强制登录的实现方法
:
- 使用装饰器,定义login_required函数,内部实现 登录认证 的代码,认证成功则执行视图函数,否则返回401
- 使用钩子函数,对 特定的 请求地址进行登录认证,认证通过则return None;否则返回401
1.3 装饰器实现强制登录
# 装饰器 实现强制登录 utils > decorators.py
from flask import request
from .jwt_util import validate_jwt_token
from functools import wraps
def login_required(viewFunc):
@wraps