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

Flask如何实现用户自主删除账号功能,怎么使用Flask-Security的delete_user

Flask用户自主注销账号实现方案

方案1:使用Flask-Security自带delete_user方法实现

前置配置

首先确保你已经正确初始化Flask-Security的用户数据存储:

from flask_security import Security, SQLAlchemyUserDatastore

# 不需要角色管理的话,第二个参数可传None
user_datastore = SQLAlchemyUserDatastore(db, User, None)
security = Security(app, user_datastore)

补充User模型方法

新增密码验证方法,用于注销前的二次校验:

from werkzeug.security import check_password_hash

class User(UserMixin, db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    password_hash = db.Column(db.String(128))
    
    # 新增密码校验方法
    def verify_password(self, password):
        return check_password_hash(self.password_hash, password)

编写注销视图

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

@app.route('/account/delete', methods=['GET', 'POST'])
@login_required
def delete_account():
    if request.method == 'POST':
        # 二次校验密码,防止误删/恶意操作
        input_pwd = request.form.get('confirm_password', '')
        if not current_user.verify_password(input_pwd):
            flash('密码验证失败,无法注销账号')
            return redirect(url_for('delete_account'))
        
        # 调用Flask-Security方法删除用户记录
        user_datastore.delete_user(current_user)
        db.session.commit()
        # 清除用户登录会话
        logout_user()
        flash('您的账号已成功注销')
        return redirect(url_for('index'))
    # GET请求返回确认提示页
    return render_template('delete_account_confirm.html')

方案2:原生SQLAlchemy实现(无需依赖Flask-Security)

如果你的项目没有引入Flask-Security,直接操作数据库删除用户即可,视图逻辑和方案1基本一致,仅替换删除逻辑即可:

# 替换user_datastore.delete_user(current_user) 为以下代码
db.session.delete(current_user)
db.session.commit()

注意事项

  • 注销操作属于高风险操作,必须添加二次校验逻辑,除密码校验外也可选择短信验证码、邮箱验证码校验
  • 如果用户表和其他业务表存在外键关联,需要提前处理关联数据:可配置数据库级联删除,或提前删除/修改关联的业务数据,避免触发外键约束报错
  • 可根据业务需求增加注销冷静期逻辑,用户提交申请后保留3-7天数据,期间可撤销注销申请,到期后再自动删除数据

内容的提问来源于stack exchange,提问作者Yehui He

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:06:10