使用 Python 从 0 开发属于你的个人管理系统 20 篇 | 登录功能的优化
我们之前的登录功能使用的是 session 会话,这有一定的局限,并且不好管理,有些请求我们还需要认证用户登录了才可以访问,所以,今天小帅b要跟你讲讲,如何优化好你的登录功能。
通往 Python 高手之路
flask-login
我们可以使用 flask-login 插件来实现,这个插件提供了用户会话管理方法,比如登录,登出,记住用户等任务。
所以我们在自己的系统写一些方法和它结合使用,效果杠杠滴。
那么首先安装一波:
pipenv install flask-login
同样的,安装完成之后,在初始化文件中获取对象:
login_manager = LoginManager(app) login_manager.init_app(app)
加载当前用户:
@login_manager.user_loader def load_user(user_id): user = User.query.get(int(user_id)) return user
model 中的继承
现在可以在用户模型中继承 flask_login 来实现相关的方法,在 user 的 model 中,导入 userMixin,然后继承:
from flask_login import UserMixin class User(db.Model, UserMixin): __tablename__ = 'my_user' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(30), nullable=False) ...
登录
那么现在,用户的登录就可以这样操作了:
本文隐藏内容 登陆 后才可以浏览
在你的网站中,有些请求是需要用户登录了才能访问的,怎么办呢?
可以使用 flask-login 的 login_required 装饰器来实现。
比如现在,用户在没有登录的情况下,是无法访问任务列表数据的,那么就可以在这个路由方法中添加装饰器:
@app.route('/todolist/<int:is_done>/', methods=['GET', 'POST']) @login_required def todolist(is_done): ...
那么这个时候,当用户没有登录,访问这个请求就会出现 401 错误:
OK,以上就是关于 flask 登录的优化使用,你学会了吗?
我们下回见,peace!