Flask和Auth0-如何检查用户是否在Jinja中经过身份验证

Flask和Auth0-如何检查用户是否在Jinja中经过身份验证,flask,auth0,Flask,Auth0,我在Flask应用程序中使用Auth0进行身份验证,不知道如何检查用户是否在Jinja模板中进行了身份验证 我想知道是否有类似于LoginManager的方法: {% if current_user.is_anonymous %} #<-- This here <li><a href="{{ url_for('login') }}">Login</a></li> {% else %} <li><a hre

我在Flask应用程序中使用Auth0进行身份验证,不知道如何检查用户是否在Jinja模板中进行了身份验证

我想知道是否有类似于LoginManager的方法:

{% if current_user.is_anonymous %} #<-- This here
<li><a href="{{ url_for('login') }}">Login</a></li>
{% else %}
<li><a href="{{ url_for('user', username=current_user.username) }}">Profile</a></li>
<li><a href="{{ url_for('logout') }}">Logout</a></li>
{% endif %}
{% if current_user.is_anonymous %} #<-- This here
<li><a href="{{ url_for('login') }}">Login</a></li>
{% else %}
<li><a href="{{ url_for('user', username=current_user.username) }}">Profile</a></li>
<li><a href="{{ url_for('logout') }}">Logout</a></li>
{% endif %}

{%if current_user.is_anonymous%}

您有两个选项:

  • 使用模板中自动可用的全局
    g
    对象和
    before\u app\u request
    钩子,阅读官方
    Flask
    上的更多内容:
然后在模板中:

{% if g.user %}
  <li><span>{{ g.user['username'] }}</span>
  <li><a href="{{ url_for('auth.logout') }}">Log Out</a>
{% else %}
  <li><a href="{{ url_for('auth.register') }}">Register</a>
  <li><a href="{{ url_for('auth.login') }}">Log In</a>
{% endif %}
然后获取当前应用程序(在您的案例中,可能需要导入
current\u app
对象)

然后您可以使用
当前用户
如下所示:

{%如果当前用户为\u匿名%}#
[..]

def _get_user():
    if has_request_context() and not hasattr(_request_ctx_stack.top, 'user'):
        current_app.login_manager._load_user()

    return getattr(_request_ctx_stack.top, 'user', None)

[..]

def _user_context_processor():
    return dict(current_user=_get_user())
[..]
    app.context_processor(_user_context_processor)
{% if current_user.is_anonymous %} #<-- This here
<li><a href="{{ url_for('login') }}">Login</a></li>
{% else %}
<li><a href="{{ url_for('user', username=current_user.username) }}">Profile</a></li>
<li><a href="{{ url_for('logout') }}">Logout</a></li>
{% endif %}