flask之flask-login登陆验证
Posted lfxiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask之flask-login登陆验证相关的知识,希望对你有一定的参考价值。
这个模块能帮助我们做很多事,最常用到的是,登陆验证(验证当前用户是否已经登陆)、记住我功能
一 安装
pip install flask-login
二 导入相关模块及对象并初始化
from flask_login import login_manager, UserMixin login_manager_local = login_manager.LoginManager() login_manager_local.init_app(app) login_manager_local.session_protection = ‘strong‘ login_manager_local.login_view = ‘login‘
三 使用
1、定义一个User类
#继承db.model 是为了方便操作数据库 class User(db.Model, UserMixin): __tablename__ = ‘users‘ id = db.Column(db.Integer, autoincrement=True, primary_key=True) username = db.Column(db.String(20), unique=True, index=True) pwd_hash = db.Column(db.String(300)) def __init__(self, username, pwd): self.username = username self.pwd = pwd @staticmethod def query_by_username(username): return User.query.filter(User.username == username).first() @property def pwd(self): raise AttributeError(u‘密码不可读‘) @pwd.setter def pwd(self, pwd): self.pwd_hash = generate_password_hash(pwd) def verify_password(self, pwd): return check_password_hash(self.pwd_hash, pwd) def __repr__(self): return ‘<User:%s>‘ % self.username
2、登陆
使用login_user登陆user后就可以使用登陆验证@login_required
@app.route(‘/login‘, methods=[‘GET‘, ‘POST‘]) def login(): if request.method == ‘GET‘: form = LoginForm() return render_template(‘login.html‘, form=form) else: form = LoginForm(request.form) if form.validate(): username = request.form[‘name‘] pwd = request.form[‘pwd‘] user = User.query_by_username(username) if user and user.verify_password(pwd): login_user(user) return ‘login ok‘ else: print(form.errors) return render_template(‘login.html‘, form=form)
4、登陆验证
@app.route(‘/‘) @login_required def hello_world(): raise CustomFlaskErr(D_IP_MASK_FORMAT_ERROR) raise CustomFlaskErr(payload={u"错误": u"测试信息"})
以上是关于flask之flask-login登陆验证的主要内容,如果未能解决你的问题,请参考以下文章