有一个简单的' is_authenticated' Stormpath的解决方案?

时间:2016-07-04 23:55:16

标签: flask-login stormpath

我在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'

2 个答案:

答案 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 :(

那会让你得到你想要的东西=)