flask 404错误与设置访问限制
1,在管理员模块定义蓝图地方设置 请求钩子,用来为当前用户的请求设置访问限制!
@admin_blue.before_request def before_request(): # 判断如果不是登录页面的请求 if not request.url.endswith(url_for("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('/')
2,在app创建文件之中定义404错误!
#所有的请求进行检测,是否有404错误! @app.errorhandler(404) @user_login_data def page_not_found(_): user = g.user data = { "user_info": user.to_dict() if user else None } return render_template('news/404.html', data=data)
可以单独增加url_prefix='/admin' 这样可以与其他模块进行区别!
from info.modules.admin import admin_blue app.register_blueprint(admin_blue, url_prefix='/admin')
3,个人中心的权限设置,如果退出的话会删除user的session信息,因此判断user 存在即可判断是否跳转。
@profile_blue.route('/info') @user_login_data def user_info(): # 只需要在这里判断一次用户登录即可 user = g.user if not user: return redirect('/') data = { 'user': g.user.to_dict() } return render_template('news/user.html', data=data)