身份验证后更改 "Sign In through Steam" 徽标

Change "Sign In through Steam" logo after authentication

我正在学习 this 教程,该教程展示了如何在基于 Flask 的网站中通过 Steam 登录。所以问题是如何在用户登录时删除 "Sign In through Steam" 徽标并显示他的用户名而不是它?当他注销时做相反的事情?我现在 html 模板中的内容:

<li><a href="/login"><input type="image" name="SignIn" value="SignIn" src="static/steam.png"/></a></li>

我相信我们可以用 session 字典来做到这一点。

{% if not session.logged_in %}
<li><a href="/login"><input type="image" name="SignIn" value="SignIn" src="static/steam.png"/></a></li>
{% else %}
<li><a href="/logout">Logout</a></li>
{% endif %}

在提到的教程中,当前用户对象存储在 g.user 变量中:

@app.before_request
def before_request():
    g.user = None
    if 'user_id' in session:
        g.user = User.query.get(session['user_id'])

这个 g 全局变量 is available 在 Jinja2 模板中也是如此。因此,您可以在模板中执行以下操作:

{% if g.user is defined and g.user is not none %}
{# User has logged in #}
<li>Hello, {{ g.user.nickname }}!</li>
<li><a href="/logout">Logout</a></li>

{% else %}
{# User has not logged in #}
<li><a href="/login"><input type="image" name="SignIn" value="SignIn" src="static/steam.png"/></a></li>
{% endif %}