python – flask g.user和before_request
发布时间:2020-12-16 21:32:22 所属栏目:Python 来源:网络整理
导读:我有一个简单的设置,使用如下所示的flask-login.当我点击before_request时,g.user设置正确.我也正确注册用户(因为他们使用正确的电子邮件/通行证打到数据库).我的问题是在before_request和页面命中之间,g.user总是变为None.我想我会错过会话,但我不知道是什
我有一个简单的设置,使用如下所示的flask-login.当我点击before_request时,g.user设置正确.我也正确注册用户(因为他们使用正确的电子邮件/通行证打到数据库).我的问题是在before_request和页面命中之间,g.user总是变为None.我想我会错过会话,但我不知道是什么.
在里面: lm = LoginManager() lm.init_app(app) lm.login_view = 'login' 在view / login.py文件中,我有以下内容. 意见/ login.py: @app.lm.user_loader def load_user(id): return models.user.user_with_id(id) @app.before_request def before_request(): g.user = current_user print 'current_user: %s,g.user: %s,leaving bef_req' % (current_user,g.user) @app.route('/login',methods=['GET','POST']) def login(): print 'in login,g.user: %s' % g.user if g.user is not None and g.user.is_authenticated(): return redirect(url_for('index')) enter_form = app.forms.EnterForm() if enter_form.validate_on_submit(): session['remember_me'] = True return app.models.user.try_register(enter_form.email.data,enter_form.password.data) return render_template('index.html',enter_form=enter_form,profiles=[]) 意见/ index.py: @app.route('/','POST']) @app.route('/index','POST']) def index(): print 'in index,g.user: %s' % g.user if not g.user: return redirect(url_for('login')) return render_template('index.html') 车型/ user.py: def try_login(email,password,remember_me): u = user_with_email(email) if u and authenticate(u,password): login_user(u,remember=remember_me) return app.views.index.go_to_index() def try_register(email,role=ROLE_USER): if not user_with_email(email): add_user(password,role=role,email=email) return try_login(email,password) 解决方法
您的try_login函数将remember_me作为第三个参数,但在提供的代码段中,您在try_register中调用try_login时不设置它.也许这是你的问题.请注意,remember_me应该是一个布尔值.
你还应该将remember_me放在try_register调用中. 最后在登录函数中调用regsiter函数并在寄存器中调用try_login是很奇怪的.模式有点凌乱:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |