码迷,mamicode.com
首页 > 其他好文 > 详细

flask之flask-login登陆验证(一)

时间:2018-06-15 15:46:28      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:else   测试   fir   str   ESS   require   session   不可   nbsp   

这个模块能帮助我们做很多事,最常用到的是,登陆验证(验证当前用户是否已经登陆)、记住我功能

一 安装

 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登陆验证(一)

标签:else   测试   fir   str   ESS   require   session   不可   nbsp   

原文地址:https://www.cnblogs.com/lfxiao/p/9184292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!