You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署在Heroku+PostgreSQL环境下Flask Login无法登录问题

Flask认证系统登录失败排查求助

基于Flask + Flask-SQLAlchemy开发的简易认证页面,部署在Heroku平台并使用PostgreSQL数据库。目前用户注册功能正常,但登录操作始终无法完成。本地运行时同样存在该问题,已尝试以下操作但未解决:

  • 多次执行数据库迁移
  • 安装psycopg2依赖
  • 重新配置User表结构

登录路由代码

@indexbp.route('/login', methods=['GET', 'POST'])
def login():
    if current_user.is_authenticated:
        flash("You have already logged in!", 'success')
        return redirect('/')
    form = LoginForm()
    if form.validate_on_submit():
        try:
            user = User.query.filter_by(username=form.username.data).first()
            if bcrypt.check_password_hash(user.hashed_password, form.password.data):
                login_user(user)
                flash('You are logged in!', 'success')
                return redirect('/')
        except AttributeError:
            db.session.rollback()
            flash('Wrong username, password or email. Please try again!', 'info')
            return redirect('/login')
        except Exception as e:
            print(e)
            db.session.rollback()
            flash('Something went wrong inside our systems, please try again later. If this problem persists, please contact our admin team.', 'danger')
            return redirect('/login')
    return render_template('login.html', form=form)

注册路由代码

@indexbp.route('/register', methods=['GET', 'POST'])
def register():
    if current_user.is_authenticated:
        flash("You have already logged in!", 'success')
        return redirect('/')
    form = RegisterForm()
    if form.validate_on_submit():
        try:
            new_user = User(username=form.username.data, hashed_password=bcrypt.generate_password_hash(form.password.data), user_id=str(uuid.uuid1()))
            db.session.add(new_user)
            db.session.commit()
            return redirect('/login')
        except Exception as e:
            print(str(e))
            db.session.rollback()
            flash('Something went wrong inside our systems, please try again later. If this problem persists, please contact our admin team.', 'danger')
            return redirect('/register')
    return render_template('register.html', form=form)

User表模型

# User table
class User(db.Model, UserMixin):
    id = db.Column(db.Integer(), primary_key=True, unique=True, nullable=False)
    username = db.Column(db.String(), unique=True, nullable=False)
    hashed_password = db.Column(db.String(), unique=False, nullable=False)
    user_id = db.Column(db.String(), unique=True, nullable=False)

Flask核心配置

app.config['SQLALCHEMY_DATABASE_URI'] = "link-to-database-provided-by-heroku"
app.config['SECRET_KEY'] = "g3AbKqKhxhCACvFNlNgLv802LUBwXQKr4X4Z9J9d"

内容的提问来源于stack exchange,提问作者Bùi Bảo Hoàng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:21:07