登录权限的验证
- 只要走center路由,判断用户是否是登录状态, 如果用户登录了, 可以正常显示页面,如果用户没有登录,则自动跳转到登录页面进行登录, 登录之后才可以进行查看
钩子函数
直接应用在app上
-
before_first_request
:处理第一次请求之前执行。 -
before_request
:在每次请求之前执行。 -
after_request : 在每个请求之后注册一个要运行的函数, 每次请求都会执行. 需要接收一个 Response 类的对象作为参数 并返回一个新的Response 对象 或者 直接返回接受到的Response 对象
-
errorhandler
:errorhandler接收状态码,可以自定义返回这种状态码的响应的处理方法。 -
teardown_appcontext
:不管是否有异常,注册的函数都会在每次请求之后执行。 -
钩子请求在一次请求中的执行顺序, 如下
Blueprint钩子函数
- before_app_request : 只要有请求都会执行
过滤不用登录可以访问的页面和需要登录才可以访问的页面
g对象
- global :全局
- g.user = user : 本次请求的对象,往g对象里面放了一个属性值user。
@user_bp.before_app_request
def before_request():
# 如果访问的页面在限制页面中
if request.path in required_login_list:
# 判断是否登录
id = session.get('uid')
# 如果没有登录,返回到登录界面
if not id:
return render_template('user/login.html')
else:
# 获取user
user = User.query.get(id)
# 把user放到全局变量中
g.user = user