Flask-Login

说明

  • flask-login是一个专门用来管理用户登录退出的扩展库

安装

  • pip install flask-login

文档

使用

  • 配置
# 第一步:添加扩展
from flask_login import LoginManager

login_manager = LoginManager()

def config_extensions(app):
    ...
    login_manager.init_app(app)
    # 设置登录端点
    login_manager.login_view = 'user.login'
    # 设置登录信息
    login_manager.login_message = '请先登录,然后才能访问'


# 第二步:继承自UserMixin类(也可以自己实现相关方法)
from flask_login import UserMixin

class User(UserMixin, db.Model):
      ...

# 第三步:实现回调  
@login_manager.user_loader
def load_user(uid):
    return User.query.get(uid)
  • 视图
# 登录
@user.route('/login/', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        # 根据用户名查找用户对象
        u = User.query.filter(User.username == form.username.data).first()
        if not u:
            flash('无效的用户名')
        elif not u.confirmed:
            flash('账户尚未激活,请先激活然后再登录')
        elif u.password != form.password.data:
            flash('无效的密码')
        else:
            flash('登录成功')
            # 用户登录,顺便可以完成记住我的功能
            login_user(u, remember=form.remember.data)
            # 有跳转地址就跳转到此,没有就跳转到首页
            return redirect(request.args.get('next') or url_for('main.index'))
    return render_template('user/login.html', form=form)

# 退出
@user.route('/logout/')
def logout():
    logout_user()
    flash('您已退出登录')
    return redirect(url_for('main.index'))

总结

状态切换:
    login_user        # 可以提供记住我的功能
    logout_user
状态查询:
    is_authenticated    登录状态
    is_anonymous        匿名状态
路由保护:
    login_required        # 保护需要登录才能访问的路由
当前用户:
    current_user        # 哪里都可以使用,在模板中不需要分配

results matching ""

    No results matching ""