flask-使用g对象实现用户身份验证

发布时间 2023-03-24 15:02:45作者: 小呆呆yy
 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,用户页面不能访问