gpt4 book ai didi

python - flask g.user 和 before_request

转载 作者:太空狗 更新时间:2023-10-30 01:22:45 27 4
gpt4 key购买 nike

我有一个使用 flask-login 的简单设置,如下所示。当我点击 before_request 时,g.user 设置正确。我也正确地注册了用户(因为他们使用正确的电子邮件/密码访问了数据库)。我的问题是在 before_request 和页面命中之间,g.user 总是变成 None。我想我在 session 中遗漏了一些东西,但我不知道是什么。

初始化:

lm = LoginManager()
lm.init_app(app)
lm.login_view = 'login'

在 view/login.py 文件中,我有以下内容。

views/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=[])

views/index.py:

@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', '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')

模型/用户.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, password, 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 应该是一个 bool 值。

你还应该将 remember_me 放在 try_register 调用中。

最后在login函数中调用regsiter函数,在register中调用try_login很奇怪。图案有点乱:)

关于python - flask g.user 和 before_request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19531721/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com