Udekorowałem metodę z login_required, ale jestem zaskoczony, że nie jest to wykonując w ogóle, co pozwala na anonimowych użytkownikach. Drukowanie current_user w metodzie zwraca to:

<flask_login.AnonymousUserMixin object at 0xb67dbd4c>

Czy nie powinien odrzucić użytkowników, które zwracają false w user.is_autheticated()? Co zrobiłem źle?


Skonfigurowałem ten sposób:

lm = LoginManager(app)
lm.login_view = 'root'

W views.py:

@lm.user_loader
def load_user(id):
    return User.query.get(int(id))

Rzeczywisty widok:

@login_required
@app.route("/messages")
def messages():
    print "current user", current_user
    return "hello world"
9
Jesvin Jose 13 sierpień 2014, 18:24

2 odpowiedzi

Najlepsza odpowiedź

Serendipity dała mi To:

Podczas stosowania dalszych dekoratorów zawsze pamiętaj, że Dekorator trasy () jest zewnętrzny:

Napisałem to w niewłaściwy sposób (trasa nie jest zewnętrzna).


PDB może wykonać Twoja podejrzana metoda w trybie debugowania, aby sprawdzić stan lokalny.

Logowanie kolby jest obecne w GitHub i źródło login_required jest wystarczająco proste, aby zrozumieć.

7
Jesvin Jose 18 czerwiec 2016, 17:47

Wszystko wygląda dobrze, co prawdopodobnie oznacza, że problem jest gdzie indziej.

Jaka jest konfiguracja, której używasz? Jeśli LOGIN_DISABLED lub TESTING jest ustawiony na true, uwierzytelnianie jest wyłączone.

Jeśli twoja konfiguracja jest w porządku, ustaw punkt przerwania wewnątrz login_required Decorator i sprawdź, dlaczego pozwala anonimowi użytkownika.

6
Bartosz Marcinkowski 13 sierpień 2014, 14:41