gpt4 book ai didi

python - current_user.is_authenticated() 上的属性错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:23 24 4
gpt4 key购买 nike

我正在使用 Flask-Login,我想通过调用 current_user.is_authenticated() 检查用户是否已登录。

我的 Flask 应用程序被组织成蓝图,其中包含一个主要的 __init__.py 文件,用于设置我的应用程序、设置蓝图并初始化 Flask-Login。我有一个脚本,run.py,位于 __init__.py 的一个目录中,它实例化应用程序并在 Debug模式下运行它。

__init.py__ 看起来(部分)像这样:

from flask import Flask, session, request, render_template                                                            
from flask.ext.login import LoginManager, current_user

from panel.views import dash, projects

from panel.users.models import User, AnonymousUser

app = Flask(__name__)
app.config.from_object("configure")

login_manager = flask_login.LoginManager()
login_manager.init_app(app)
login_manager.login_view = "/signin"
login_manager.anonymous_user = AnonymousUser
@login_manager.user_loader
def load_user(str_id):
return User.user_loader(str_id)

# Register all blueprints here.
app.register_blueprint(dash.bp, url_prefix="/dash")
app.register_blueprint(projects.bp, url_prefix="/projects")

logging.warning(current_user.is_authenticated())

当我从 run.py 运行它时(部分看起来像这样):

from panel import app 

app.run(host='0.0.0.0', debug=True)

引发此异常:

Traceback (most recent call last):
File "run.py", line 5, in <module>
from panel import app
File "/opt/www/panel/panel/__init__.py", line 40, in <module>
logging.warning(current_user.is_authenticated())
File "/opt/virtualenvs/coefficient/lib/python2.6/site-packages/werkzeug/local.py", line 336, in __getattr__
return getattr(self._get_current_object(), name)
File "/opt/virtualenvs/coefficient/lib/python2.6/site-packages/werkzeug/local.py", line 295, in _get_current_object
return self.__local()
File "/opt/virtualenvs/coefficient/lib/python2.6/site-packages/flask_login.py", line 403, in <lambda>
current_user = LocalProxy(lambda: _request_ctx_stack.top.user)
AttributeError: 'NoneType' object has no attribute 'user'

因为我为了简洁省略了一些行,回溯中的行号与我发布的代码不匹配,但是你可以看到行 logging.warning(current_user.is_authenticated()) 似乎成为错误发生的地方。

感谢任何帮助。

最佳答案

你不能打电话

current_user.is_authenticated()

在方法/ View 之外,因为方法/ View 之外的代码将在请求之外运行。

如果您不在请求中,则没有要检查身份验证的 current_user

关于python - current_user.is_authenticated() 上的属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12710036/

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