Flask-Login
说明
- 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 = '请先登录,然后才能访问'
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 # 哪里都可以使用,在模板中不需要分配