flask-login 功能扩展 flask-login-multi
手头开发一个登录项目,分user 和admin 表,需要分别登录前后台,flask 的扩展flask-login 已有的功能不能满足需要
所以打算研究一下源代码,扩展一下功能。
项目 user 和admin 两个模块,分别用于用户中心和管理后台区分。
所以有了思路,flask-login里面的session用endpoint的名字分别记录 user 和admin 的登录状态
完整模块
https://github.com/siaoynli/flask_login_multi
pipy地址
https://pypi.org/project/Flask-Login-Multi/
安装好 flask-login 和 flask-login-multi
pip install flask_login pip install flask_login_multi
1.创建app,主要代码
from flask import Flask from flask_login_multi.login_manager import LoginManager app=Flask(__name__) login_manager = LoginManager(app)
#用于各个蓝图跳转登录页的 endpoint login_manager.blueprint_login_views = { 'user': "user.user_login", 'admin': "admin.admin_login", }
2.创建蓝图,注册蓝图代码略过
admin_app = Blueprint('admin', __name__, url_prefix="/admin")
user_app = Blueprint('user', __name__, url_prefix="/user")
3. 模型里添加 user_loader,里面的endpoint名字对应蓝图的名字,user,admin
@login_manager.user_loader def load_user(id, endpoint='user'): if endpoint == 'admin': return Admin.query.get(id) else: return User.query.get(id)
4.登录用户或管理员,功能和flask-login一样
from flask_login_multi import login_user #user user = User.query.filter_by(name=form.name.data).first() login_user(user,remember=True) #admin user = Admin.query.filter_by(name=form.name.data).first() login_user(admin)
5.权限 ,和flask-login功能一样
from flask_login_multi import login_required,current_user #管理首页 @admin_app.route('/index') @login_required def index(): print(current_user) return 'admin.index'
6.退出当前用户
logout_user()
欢迎加入qq群交流 184596631