1 from flask import Flask,g,abort 2 app = Flask(__name__) 3 4 #每次请求前,校验用户是否登录 5 @app.before_request 6 def authentication(): 7 #查询数据库,确认用户是否注册,如果已注册,返回用户id,否则用户不存在 8 #此处为测试数据 9 #g.user_id = 2022 10 g.user_id = None 11 12 #手动实现登录验证装饰器 13 def login_required(func): 14 def wrapper(*args,**kwargs): 15 if g.user_id is not None: 16 return func(*args,**kwargs) 17 else: 18 abort(401) 19 return wrapper 20 21 #首页,不登录可访问 22 @app.route('/') 23 def index(): 24 return 'index page {}'.format(g.user_id) 25 26 #个人信息页,不登录无法访问 27 @app.route('/profile') 28 #在此处来添加装饰器 29 @login_required 30 def user_info(): 31 return 'user info page {}'.format(g.user_id) 32 33 if __name__ == '__main__': 34 app.run()
1、当user_id有数据,可以正常访问首页和user_info页面
2、当user_id为None,用户页面不能访问