2015-01-15 4 views
2

Использование Flask-Login, я могу регистрировать пользователей и выходить, а также регистрировать новых пользователей. Если я войду в систему, перейдите к другому сайту, а затем вернитесь на мой сайт, я все равно выполнил вход. Не следует login_user(user, remember=False) предотвратить это? Я не понимаю, как это работает?Почему настройка remember = False все еще сохраняет мою регистрацию?

В views.py у меня есть, среди прочего коды:

from flask.ext.login import login_user, logout_user, current_user, login_required 

@app.route('/signup', methods=['GET', 'POST']) 
def signup(): 
    form = SignupForm() 
    if form.validate_on_submit(): 
     user = User.query.filter_by(email = form.email.data.lower()).first() 
     if user: 
      flash("Email already exists!") 
      return redirect(url_for('signup')) 
     elif form.password.data != form.password2.data: 
      flash("Passwords do not match.") 
      return redirect(url_for('signup')) 
     else: 
      newuser = User(email=form.email.data, nickname=form.username.data) 
      newuser.pwdhash = generate_password_hash(form.password.data) 
      db.session.add(newuser) 
      db.session.commit() 
      login_user(newuser, remember=False) 
      flash("Thank you for registering") 
       return redirect(url_for('index')) 
    return render_template('signup.html', form=form) 

@app.route('/login', methods=['GET', 'POST']) 
def login(): 
    form = SigninForm() 
    if form.validate_on_submit(): 
     user = User.query.filter_by(email = form.email.data.lower()).first() 
     if user and check_password_hash(user.pwdhash, form.password.data): 
      login_user(user, remember=False) 
      return redirect(url_for('index')) 
     else: 
      flash('huh') 
      return redirect(url_for('login')) 
    else: 
     return render_template('login.html', form=form) 

ответ

2

Колба-Вход помнить флаг устанавливает специальный куки в дополнении к кукам сессии КОЛБЫ в. Это помнит, что cookie сохраняется во всех перезапусках браузера, по умолчанию в течение 30 дней, но создается только в том случае, если помните, что это правда.

Файл cookie-файла флэка присутствует, даже если помнить, что он является ложным, поэтому вы остаетесь в системе в течение всего сеанса браузера. Можно также сохранить файл cookie сеанса флэка, но это выходит за рамки флажка-входа.

Поведение, которое вы наблюдаете, является абсолютно нормальным. Невозможно автоматически вывести кого-то из текущего сеанса, когда они покинут ваш сайт.

Из docs, курсив мой:

Куки будут сохранены на компьютере пользователя, а затем Колба-Логин автоматически восстановить идентификатор пользователя из этого печенья , если он не в сессии ,

+0

Я вижу. Как это обычно обрабатывается? Если на странице входа есть флажок remember_me, который не проверяется пользователем, то следует ли изменить время сеанса Permanent_session_lifetime на небольшое значение? Или это нормальное поведение, чтобы запомнить пользователя в течение 30 дней, даже если они говорят, что нет? – theQman

+0

@theGman Я обновил ответ, чтобы лучше понять, что происходит. – davidism

+0

Ahh Я забыл о закрытии борссера ... Хорошо. Теперь я могу перейти к тому, чтобы обернуть мою голову значком токена memor_me, о котором я еще больше смущен. – theQman