Repository navigation
Member
pollybird edited this page Sep 12, 2026
·
1 revision
社区插件 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}占位符,适合对接自有短信网关。
在插件设置中填写对应平台的 AppID / AppSecret 并开启即可。回调流程:
- 已绑定该第三方账号的会员 → 直接登录。
- 已登录的会员 → 绑定该第三方账号。
- 未绑定且未登录 → 按
member_oauth_auto_register配置决定是否自动建号。
后台 前台用户中心 → 栏目可见性 可勾选需会员登录才能访问的栏目。也可在栏目编辑页开启「仅会员可见」开关(member 插件启用时显示)。
- 未登录用户访问会员栏目及其文章 → 302 跳转登录页。
- 主导航对游客隐藏会员栏目。
- 已登录会员绕过整页缓存,避免缓存串页。
插件不向主导航贡献菜单项。会员相关入口统一在导航栏右上角展示:
- 游客:显示「登录」「注册」按钮。
- 已登录会员:显示头像 + 昵称下拉菜单(会员中心 / 个人资料 / 修改密码 / 退出)。
| 表 | 说明 |
|---|---|
members |
会员账号(用户名/密码哈希/昵称/头像/邮箱/手机/性别/签名/状态/登录锁定) |
member_oauths |
第三方账号绑定(provider + openid 唯一约束) |
member_sms_codes |
短信验证码(哈希存储,purpose/expires_at/used) |
首次启用 member 插件时自动创建以上三张表,禁用插件不删表、数据保留。