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)

 

posted @ 2018-06-06 16:07  十七楼的羊  阅读(985)  评论(0编辑  收藏  举报