flask-login 功能扩展 flask-login-multi

懵懂的女人 提交于 2020-04-27 18:26:19

手头开发一个登录项目,分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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!