Я использую флажок Login и Principal для управления идентификацией и ролями. Мои потребности описаны прямо из документов. Мой код здесь:Flask Login и Principal - current_user анонимный, хотя я вошел в систему
@identity_loaded.connect_via(app)
def on_identity_loaded(sender, identity):
# Set the identity user object
identity.user = current_user
# Add the UserNeed to the identity
if hasattr(current_user, 'get_id'):
print 'current_user ' + str(current_user.get_id())
identity.provides.add(UserNeed(current_user.get_id))
# Assuming the User model has a list of roles, update the
# identity with the roles that the user provides
if hasattr(current_user, 'roles'):
if current_user.roles:
for role in current_user.roles:
identity.provides.add(RoleNeed(role.name))
В моем коде авторизации я делаю это:
identity_changed.send(current_app._get_current_object(),
identity=Identity(user.user_id)
На входе, сигнал срабатывает, как и ожидалось. При каждой последующей загрузке страницы current_user является анонимным и не имеет идентификатора пользователя, но все функции @login_required ведут себя так, как если бы пользователь вошел в систему. Вход в флэшку знает, что пользователь вошел в систему, но по какой-то причине current_user несовместим.
Я пропустил какой-то важный пункт конфигурации где-нибудь?
Вы делаете что-нибудь с 'static_url_path = ''' в своем инициализации Flask? Я столкнулся с подобной проблемой: http://stackoverflow.com/questions/16627384/flask-login-with-static-user-always-yielding-401-unauthorized. Это было недоумение, поскольку сеанс и логин выглядели хорошо (пользователь может войти в систему), но у меня всегда был анонимный пользователь, когда вы попали в защищенную конечную точку – craigb