问题
- 解决普通用户登录之后直接访问后台具体的视图函数的问题
- 如果是普通用户访问后台的视图函数,直接跳转到项目主页,不再执行后续的逻辑判断
- 后台后续要实现多个视图函数,如果每一个函数内部都去判断用户权限,那么代码重复率高,冗余代码较多
- 所以得有一个统一判断入口,后台模块中,除了登录页面,后台的其他页面都要判断是否具有管理员权限
- 采用的方式为:请求勾子中的 before_request,来请求之前进行判断
代码实现
@admin_blu.before_request
def before_request():
# 判断如果不是登录页面的请求
if not request.url.endswith(url_for("admin.admin_login")):
user_id = session.get("user_id")
is_admin = session.get("is_admin", False)
if not user_id or not is_admin:
# 判断当前是否有用户登录,或者是否是管理员,如果不是,直接重定向到项目主页
return redirect('/')