Python Flask: 实现用户权限管理功能

来自CloudWiki
跳转至: 导航搜索

用户权限

需用户登录后才能访问的路由及说明如下:

  • /dashboard
  • /add_article
  • /edit_article
  • /delete_article
  • /logout

对于这些路由,可以在方法中添加逻辑判断来看其是否登录,

也可以使用装饰器来简化代码。

登录检验装饰器

from functools import wraps
# 如果用户已经登录
def is_logged_in(f):
    @wraps(f)
    def wrap(*args, **kwargs):
        if 'logged_in' in session:     # 判断用户是否登录
            return f(*args, **kwargs)  # 如果登录,继续执行被装饰的函数
        else:                          # 如果没有登录,提示无权访问
            flash('无权访问,请先登录', 'danger')
            return redirect(url_for('login'))
    return wrap

添加装饰器

# 控制台
@app.route('/dashboard', methods=['GET', 'POST'])
@is_logged_in
def dashboard():
    return "欢迎光临"

效果

添加登录判断的装饰器后,

访问http://119.3.212.161:5006/dashboard

系统会首先判断是否登录,如果没有登录,会自动跳转到/login页面