从不调用Flask-Login load_user

时间:2015-08-27 15:19:04

标签: python authentication flask flask-login

我正在为我的项目使用Flask-Login(版本0.2.11)。我把它初始化为:

from flask.ext import login

from project import app
from project.database import db
from project.modules.user import User, Anonymous

login_manager = login.LoginManager()
login_manager.init_app(app)
login_manager.anonymous_user = Anonymous
login_manager.login_view = 'frontend.login'

@login_manager.user_loader
def load_user(id):
    print('USER LOADER CALLED')
    return User.query.get( int(id) )

UserUserMixin和数据库模型的子类。

当我为有效用户调用login_user方法时,它返回true。 login_required装饰器也按预期工作。 但是,即使在提交登录表单后,我的模板中的current_user仍然是Anonymous的实例。 load_user中的调试语句永远不会打印出来。我根本无法访问受login_required装饰器保护的页面。

我的其他代码不会修改session,因此我认为这不是导致此问题的原因。 SECRET_KEY在配置中设置。

那么,我的初始化代码出了什么问题?

编辑:如果我将“remember = True”传递给该函数,我似乎能够登录。但是,在没有“记住我”选项的情况下登录是行不通的。

编辑(2):似乎没有“记住我”的登录在基于Chromium / WebKit的浏览器(Opera 31.0,Vivaldi,Chrome)中不起作用。但是,它确实可以在Firefox中使用。

解决方案:问题是在127.0.0.1而不是localhost上运行应用程序 - Chrome无法正确处理通过其IP地址访问的网页的Cookie。

0 个答案:

没有答案