У меня есть приложение flask, и я использую flask-login, следуя инструкциям (здесь ничего необычного)
- нормально работает на хостинге
- отлично работает на моем локальном компьютере MAC (дома)
- не работает на моем локальном компьютере с Linux (в офисе, который может быть за брандмауэром, но я могу выполнять переадресацию портов и подключаться к базе данных)
- не работает в Chrome или Firefox
- не работает, если я работаю на
localhost
вместо127.0.0.1
.
from flask.ext.login import LoginManager
login_manager = LoginManager()
login_manager.session_protection = "strong"
login_manager.init_app(app)
login_manager.login_view = 'login'
def login():
error = None
form = LoginForm()
if request.method == 'POST':
user = db.users.find_one({"username": form.username.data})
pass_hash = generate_password_hash(form.password.data)
if user and User.validate_login( pass_hash, user['password'] ):
user_obj = User(user['username'])
session['logged_in'] = True
login_user(user_obj,remember=True)
flash("Logged in successfully", category='success')
print 'logged in: OK'
#return redirect(request.args.get("next") or url_for("index"))
return redirect( url_for("index"))
error = 'Invalid credentials'
return render_template('login.html', title='login', **locals())
ну, когда я неправильно ввожу свой пароль, он выдает ошибку «Неверные учетные данные». Когда я правильно ввожу свой пароль, я не вижу мигающего сообщения «Вход выполнен успешно», но в консоли я вижу «Вход выполнен успешно». Так что проблем с подключением к БД нет. Однако я не вошел в систему. Например,
g.user.is_authenticated()
выдает false в шаблоне (такое происходит только на моем локальном линуксе, с другой стороны хостинг и MAC успешно логинит пользователя).
User
модель? В частности, какова ваша реализацияis_authenticated()
? - person Peter Brittain   schedule 14.07.2015