@AliminVerckon

Почему не засчитывает авторизацию?

Авторизация
@app.route('/auth' , methods=['GET', 'POST'])
def special():
    if current_user.is_authenticated:
        return redirect(url_for('special_control'))
    form = LoginForm()
    if form.validate_on_submit():
        user = SuperUser.query.filter_by(login=form.username.data).first()
        if user is None or not user.check_password(form.password.data):
            flash('Invalid username or password')
            return redirect(url_for('special'))
        login_user(user, remember=form.remember_me.data)
        return redirect(url_for('special_control'))
    return render_template('/products/login.html', form=form, title='Авторизация')

Куда перенаправляет, если пользователь существует
@app.route('/control')
@login_required
def special_control():
    return render_template('/products/control_panel.html', title='Панель управления', )

Форма
class LoginForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])
    remember_me = BooleanField('Remember Me')
    submit = SubmitField('Sign In')

Шаблон
<form action="" method="post"  novalidate>
                                {{ form.hidden_tag() }}
                                <p>
                                    <p style="margin-left: 35%;">{{ form.username.label }}</p><br>
                                    <p>{{ form.username(size=32) }}</p><br>
                                    {% for error in form.username.errors %}
                                    <span style="color: #ff0000;">[{{ error }}]</span>
                                    {% endfor %}
                                </p>
                                <p>
                                    <p style="margin-left: 36%;">{{ form.password.label }}</p><br>
                                    <p>{{ form.password(size=32) }}</p><br>
                                    {% for error in form.password.errors %}
                                    <span style="color: #ff0000;">[{{ error }}]</span>
                                    {% endfor %}
                                </p>
                                <p style="margin-left: 27%;">{{ form.remember_me() }} {{ form.remember_me.label }}</p>
                                <p style="margin-left: 37%;">{{ form.submit() }}</p>
                            </form>

пользователь в бд существует и пароль закодирован werkzeug-ом

Проблема в том, что при авторизации он не засчитывает её и перенаправляет на эту же страницу не написав ошибки, что не правильные имя или пароль, при этом даже если пользователя нет не пишет ни какого предупреждения.(последнее осуществляется командой flash)
  • Вопрос задан
  • 43 просмотра
Решения вопроса 2
Wispik
@Wispik
Правильно, вот же у тебя написано, если пользователь авторизован, то редирект на эту же страницу
if current_user.is_authenticated:
        return redirect(url_for('special'))
Ответ написан
@AliminVerckon Автор вопроса
Ошибка была в проверке пароля!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы