2016-07-04 23 views
1

Ich fand diese in der Stormpath docs:Gibt es eine einfache 'is_authenticated' Lösung in Stormpath?

is_authenticated() (http://flask-stormpath.readthedocs.io/en/latest/api.html) 
All users will always be authenticated, so this will always return True. 

So wie es funktioniert in Kolben-Login is_authenticated scheint nicht zu funktionieren. Muss ich eine Problemumgehung durchführen oder gibt es bereits eine ähnliche Funktion in dieser API?

--- EDIT ---

Danke für die Antwort, aber es scheint immer noch nicht zu funktionieren. Was ich versuche, ist, dies zu tun:

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') 

Und ich bekomme diese Fehlermeldung:

AttributeError: 'AnonymousUserMixin' object has no attribute 'given_name' 

Antwort

1

ich auch diesen Fehler hatte. Ich habe einen ähnlichen Code wie oben angegeben:

if user: 
    return render_template('index.html', given_name=user.given_name) 
return render_template('index.html') 

und würde den gleichen Fehler wie in OP erhalten:

AttributeError: 'AnonymousUserMixin' object has no attribute 'given_name' 

ich es fest, indem Sie den Code an sich ändernde:

if user.is_anonymous() == False: 
    return render_template('index.html', given_name=user.given_name) 
return render_template('index.html') 

Es scheint, dass der Fehler darin bestand, dass die if-Anweisung für das Benutzerobjekt immer als True aufgelöst wird, da das Benutzerobjekt auf irgendeine Weise instanziiert wird, wenn ein Benutzer aus flask.ext.stormpath importiert wird.

0

Ich bin der Autor dieser Bibliothek. Es gibt tatsächlich eine Möglichkeit, zu überprüfen, ob ein Benutzer authentifiziert ist oder nicht - der Code, den Sie gefunden haben, ist tatsächlich Teil der internen Flask-Login-API und nicht für den öffentlichen Verbrauch gedacht.

Was Sie tun möchten, ist dies:

from flask_stormpath import user 

def my_view(): 
    if user: 
     # there is a user who is authenticated! 
    else: 
     # nobody has authenticated :(

Das wird Sie bekommen, was Sie wollen =)

+0

Scheint immer noch nicht zu funktionieren, ich habe meine Frage aktualisiert - vielleicht können Sie mir noch einmal helfen. :) – Yhun

+0

Benutzt du ein anderes Plugin als Flask-Stormpath? Wenn Sie Ihre aktualisierte Frage betrachten, scheint es, dass Sie etwas anderes haben, das dieses "Benutzer" -Objekt überschreibt. – rdegges

+0

Nein, kein anderes Plugin als Flask-Stormpath in dieser Anwendung. – Yhun