我在Stormpath文档中找到了这个:
is_authenticated() (http://flask-stormpath.readthedocs.io/en/latest/api.html)
All users will always be authenticated, so this will always return True.
所以is_authenticated似乎不像在flask-login中那样工作。我是否必须做一个解决方法,或者是否已在此API中预先构建类似的功能?
--- --- EDIT
感谢您的回答,但它似乎仍然无效。我想要做的是:
navbar.html
<div class="navbar-right">
{% if user %}
<p class="navbar-text">Signed in as <a href="#" class="navbar-link">{{ result }}</a></p>
{% else %}
<button id="registerbtn" type="button" class="btn btn-default navbar-btn">Sign up</button>
{% endif %}
</div>
app.py
@app.route('/navbar')
def navbar():
if user:
return render_template('navbar.html', result=user.given_name)
else:
return render_template('navbar.html')
我收到此错误消息:
AttributeError: 'AnonymousUserMixin' object has no attribute 'given_name'
答案 0 :(得分:1)
我也有这个错误。我使用了与上面提供的类似的代码:
if user:
return render_template('index.html', given_name=user.given_name)
return render_template('index.html')
并会得到与OP中相同的错误:
AttributeError: 'AnonymousUserMixin' object has no attribute 'given_name'
我通过将代码更改为:
来修复它if user.is_anonymous() == False:
return render_template('index.html', given_name=user.given_name)
return render_template('index.html')
似乎错误是用户对象的if语句总是解析为True,因为在从flask.ext.stormpath导入用户时以某种方式实例化用户对象。
答案 1 :(得分:0)
我是这个图书馆的作者。确实有一种方法可以检查用户是否经过身份验证 - 您找到的代码实际上是内部Flask-Login API的一部分,而不是供公众使用。
你想要做的是:
from flask_stormpath import user
def my_view():
if user:
# there is a user who is authenticated!
else:
# nobody has authenticated :(
那会让你得到你想要的东西=)