flask-login 无限重定向问题解决方案

flask-login有时候会莫名地出现无限重定向问题。

  • 确认 user_load 回调函数一定要正确
  • 如果都感觉没什么问题,那么问题有可能出现在login_user()函数上面。

postman调试可以正常返回结果,但是浏览器不行。

那么有可能是刚刚login就马上过期了,令remember为True就行了。但是这里在本质上是让浏览器保存了长时间保持cookie,相当于关闭了浏览器之后依然可以登录。

login_user(user, remember=True)

还有一个就是初始化顺序问题。
正确的初始化顺序:

login_manager.init_app(app)
db.init_app(app) # db is SQLAlchemy()

2022.9.19更新

确认了,这就是一个flask-login的bug,尤其是在使用next参数的时候会莫名出现问题。建议使用flask原生的session来进行登录状态,可以自定义很多字段,session其实就是一个存储会话数据的字典,用来进行一系列操作完全没有问题,原生的flask确实好用。

再次吐槽!!不要使用flask-login!!!真的没有必要!原生的session想要啥就有啥,不必担心库出错。在这里我提供下面的两个我自己项目里面写的装饰器。

# 登录装饰器
def login_required(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        if session.get('user_id'):
            return func(*args, **kwargs)
        else:
            raise Unauthorized(description='没有权限访问')
    return wrapper
# 实名认证装饰器
def verify_required(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        if session.get('is_verified'):
            return func(*args, **kwargs)
        else:
            raise Unauthorized(description='没有权限访问')
    return wrapper

基于python的装饰器,那么就可以根据session字段进行相对应的操作,非常的灵活。并且可以在视图函数里面直接调用session,就像一个字典一样。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值