用户通过flask_login授予了条目

时间:2018-09-21 15:05:08

标签: authentication flask-login flask-session

我的网站存在问题,该网站是使用python,flask,gunicorn + supervisorctl,nginx堆栈构建的。

问题是:如果我在对网站进行了一些更新后通过“ sudo administratorctl reload”重新启动我的网站后以用户身份登录(例如,以admin为例),那么之后尝试登录的任何用户都将以admin身份登录即使他们输入了随机的用户名和密码组合,也很明显。

我当前正在使用flask_login插件来处理登录,但是我怀疑与flask会话及其交互方式有关。

我的登录代码如下

from flask import render_template, flash, redirect, url_for, request, current_app, session
from flask_login import current_user, login_user, logout_user, login_required

@bp.route('/login', methods = ['GET', 'POST'])
def login():
    if current_user.is_authenticated:
        return redirect(url_for('main.user'))
    form=LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(username = form.username.data).first()
        if user is None or not user.check_password(form.password.data):
            return redirect(url_for('auth.login'))
        login_user(user, remember=form.remember_me.data)
        next_page = request.args.get('next')
        if not next_page or url_parse(next_page).netloc != '':
            next_page = url_for('main.user')
        return redirect(next_page)
    return render_template('auth/login.html', title=_('登录'), form=form)

我还使用flask会话来识别当前语言并管理翻译

在主路由中:

@bp.before_app_request  ####Michael: becareful of these
def before_request():
    if current_user.is_authenticated:
        current_user.last_seen = datetime.utcnow()
        db.session.commit()


@bp.context_processor
def inject_conf_var():
    return dict(CURRENT_LANGUAGE=session.get('language', 
request.accept_languages.best_match(current_app.config['LANGUAGES'])))

以及我的 init

@babel.localeselector
def get_locale():
    # if the user has set up the language manually it will be stored in the session,
    # so we use the locale from the user settings
    try:
        language = session['language']
        print(session['language'])
    except KeyError:
        language = None
    if language is not None:
        return language
    return 
request.accept_languages.best_match(current_app.config['LANGUAGES'])

我不太确定从哪里开始找出问题所在,此刻问题超出了我的范围。我看到的最近的东西是:

Users appear to be logged in as another user

但是,就我而言,同一件事似乎在所有计算机上发生,因此并不是VPN问题,我不确定是否可以使用相同的解决方案。

感谢您的帮助!

0 个答案:

没有答案