flask 用户认证与登录

1.首先需要写一个登录的表单

在form.py中写好form

2.在模板中使用form形成一个登录的界面

在这一步中需要一个判断,根据用户是否登录提供不同的表单界面,若已登录则需要呈现已登录,否则则是登录

这个判断就是用户认证

3.用户认证 

使用Flask-Login实现用户认证

a.首先pip install flask-login

b.在init.py中初始化flask-login

from flask.ext.login import LoginManager #

app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
lm = LoginManager()   #
lm.init_app(app)          #
lm.login_view = 'test'  #登录界面的端点

c.编写回调函数 就是以特殊的形式访问数据库,加载好所有需要的用户

在view.py中

from app import db, models, lm
@lm.user_loader
def load_user(id):
    return models.User.query.get(int(id))
#####如果已经 from .models import User 就不要models

d.在User类中实现特定的方法

class User(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    nickname = db.Column(db.String(64), unique = True)
    email = db.Column(db.String(120), unique = True)
    posts = db.relationship('Post', backref = 'author', lazy = 'dynamic')
########
#####   下面四种方法的作用具体看flaskweb档案
    def is_authenticated(self):
        return True
    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        try:
            return unicode(self.id)  # python 2
        except NameError:
            return str(self.id)  # python 3

    def __repr__(self):
        return '<User %r>' % (self.nickname)

注意:在视图中使用{% if current_user.is_authenticated %}后面不要加括号,主要是版本问题

 

posted @ 2017-02-03 15:51  lyn流光  阅读(677)  评论(0)    收藏  举报