Skip to content
pollybird edited this page Sep 12, 2026 · 1 revision

前台用户中心(member 插件)

前台用户中心

社区插件 member(builtin=false),提供独立于后台管理员的前台会员体系。最低核心版本 v2.6.4。

核心功能

功能 路径 说明
注册 /register 用户名 + 密码,需同意注册协议
登录 /login 密码登录 / 短信验证码登录双 Tab,微信/QQ 一键登录
找回密码 /forgot-password 手机验证码重置密码
会员中心 /member 账号信息 + 第三方绑定状态
个人资料 /member/profile 昵称/头像/邮箱/手机/性别/签名编辑
修改密码 /member/password 旧密码校验后修改
退出 /logout 清除会员 session

安全设计

  • 会员体系独立于后台管理员:members 表与 users 表完全分离,session 键 member_id 独立于 Flask-Login。
  • 密码使用 werkzeug generate_password_hash 哈希存储。
  • 短信验证码 SHA-256 哈希存储,一次性消费,60 秒间隔 + 每日 10 条频控。
  • OAuth 回调用 state 参数防 CSRF。
  • 头像上传走核心统一上传校验(扩展名 + MIME + 去重)。

短信验证码通道

后台 前台用户中心 → 插件设置 → 短信通道 配置:

  • 日志通道(默认):验证码写入应用日志,用于开发测试。
  • 阿里云短信:免 SDK,RPC HMAC-SHA1 签名,填写 AccessKeyId/AccessKeySecret/SignName/TemplateCode。
  • 通用 Webhook:向配置 URL POST JSON,支持 {phone}/{code} 占位符,适合对接自有短信网关。

微信 / QQ 一键登录

在插件设置中填写对应平台的 AppID / AppSecret 并开启即可。回调流程:

  1. 已绑定该第三方账号的会员 → 直接登录。
  2. 已登录的会员 → 绑定该第三方账号。
  3. 未绑定且未登录 → 按 member_oauth_auto_register 配置决定是否自动建号。

栏目会员可见性

后台 前台用户中心 → 栏目可见性 可勾选需会员登录才能访问的栏目。也可在栏目编辑页开启「仅会员可见」开关(member 插件启用时显示)。

  • 未登录用户访问会员栏目及其文章 → 302 跳转登录页。
  • 主导航对游客隐藏会员栏目。
  • 已登录会员绕过整页缓存,避免缓存串页。

右上角用户菜单

插件不向主导航贡献菜单项。会员相关入口统一在导航栏右上角展示:

  • 游客:显示「登录」「注册」按钮。
  • 已登录会员:显示头像 + 昵称下拉菜单(会员中心 / 个人资料 / 修改密码 / 退出)。

数据表

表 说明
members 会员账号(用户名/密码哈希/昵称/头像/邮箱/手机/性别/签名/状态/登录锁定)
member_oauths 第三方账号绑定(provider + openid 唯一约束)
member_sms_codes 短信验证码(哈希存储,purpose/expires_at/used)

首次启用 member 插件时自动创建以上三张表,禁用插件不删表、数据保留。

Clone this wiki locally