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 %}后面不要加括号,主要是版本问题
浙公网安备 33010602011771号