flask-login 功能扩展 flask-login-multi 实现多用户表登录跳转对应login页

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

1

2

pip install flask_login

pip install flask_login_multi

1.创建app,主要代码

1

2

3

4

5

6

7

8

9

10

11

from flask import Flask

from flask_login_multi.login_manager import LoginManager  

 

app=Flask(__name__)

 

login_manager = LoginManager(app)  

<br>#用于各个蓝图跳转登录页的 endpoint

login_manager.blueprint_login_views = 

        'user':  "user.user_login"

        'admin'"admin.admin_login"

    

2.创建蓝图,注册蓝图代码略过

1

2

admin_app = Blueprint('admin', __name__, url_prefix="/admin")  <br>

user_app = Blueprint('user', __name__, url_prefix="/user"

3. 模型里添加 user_loader,里面的endpoint名字对应蓝图的名字,user,admin

1

2

3

4

5

6

@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一样

1

2

3

4

5

6

7

8

9

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功能一样

1

2

3

4

5

6

7

8

9

from flask_login_multi import login_required,current_user 

  

 

#管理首页

@admin_app.route('/index'

@login_required 

def index(): 

   print(current_user) 

   return 'admin.index'

 6.退出当前用户 

1

logout_user()

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值