!

This page is not translated yet

The interface, navigation and community content are bilingual. The long-form body of this page is still in Chinese. The translation work is tracked as task I18N-10.

See translation tasks

Module 01 · V1.0 · Identity & Auth

用户体系与身份

一切内容的归属地,社区的最小不可分割单元

P0V1.0缺失则产品不成立,必须最先交付

模块目标

要达成什么

建立可注册、可登录、可识别、可分级的用户身份底座,让后续所有模块(发帖、投票、评论、治理)都有可靠的「谁」可以做主语。

为什么必须存在

没有用户体系,投票无法去重、评论无法归属、治理无法定责。用户体系是所有功能的地基,必须先于内容落地。

功能清单

共 8 个功能点,每个功能点给出实现要点,可直接作为开发任务的描述。

多方式注册

P0

支持邮箱 + 密码、手机号 + 短信验证码、第三方 OAuth(GitHub / Google / 微信 / Apple)三条注册路径。

实现要点:邮箱注册需发送验证邮件并点击激活;手机号走验证码;OAuth 首次登录自动创建本地账号并在 oauth_accounts 记录绑定关系,后续同一邮箱自动合并。

多方式登录与会话管理

P0

统一的登录入口,签发短期 Access Token(15 分钟)+ 长期 Refresh Token(30 天),支持多设备并行登录与单设备下线。

实现要点:Refresh Token 一次性使用并轮换,若检测到已使用的 Token 被再次提交,判定为泄露并吊销该用户全部会话。用户在「安全设置」中可查看所有在线设备并逐一踢出。

用户资料体系

P0

区分「账号数据」(用户名、邮箱、密码)与「公开资料」(昵称、头像、简介、主页背景、社交链接),二者解耦。

实现要点:用户名字段全局唯一且不可随意更改(改名限制 30 天一次,并保留历史更名记录);昵称可随时修改。头像与背景图走媒体服务上传,自动生成多尺寸缩略图。

信任等级 TL0–TL4

P0

基于行为自动晋升的五级信任模型,等级决定发帖频率、能否私信、投票权重、举报权重与能否上传媒体。

实现要点:TL0 新用户仅能浏览与回复少量次数;完成邮箱验证 + 阅读若干主题升至 TL1;持续活跃无违规升至 TL2;被多篇内容获赞、举报准确率高升至 TL3;由社区领袖手动授予 TL4。升级完全自动,无需人工审批。

Karma 声望值

P1

双维度声望:发帖 Karma 与评论 Karma 分开统计,避免「只发帖不回帖」的刷分行为。

实现要点:每获得一次 upvote 加 1,downvote 减 1,但计入权重系数(低信任等级账号的票按 0.5 折算)。Karma 不直接展示具体含义,仅作为排序权重与部分版块准入的参考。

用户主页

P1

展示用户的概览(Karma、注册时间、社区贡献)、内容 Tab(帖子 / 评论 / 收藏 / 赞过)、以及社区勋章墙。

实现要点:主页默认按「热度」聚合该用户的高分内容;引入「是否为本人」判断,本人可见私密 Tab(草稿、已隐藏内容)。

隐私与安全设置

P1

在线设备管理、登录通知、私信白名单、主页可见性、内容搜索可见性、账号注销与数据导出。

实现要点:开启「异地登录提醒」后,每次新设备登录会向邮箱推送通知;注销采用冷静期 7 天后物理删除,期间可撤销。

账号成长与等级头衔

P2

全局成长值与社区内独立等级/头衔,社区可自定义头衔文案以强化垂直归属感。

实现要点:成长值由签到、发帖、被赞、被采纳等行为累积;社区内等级独立计算,社区管理员可配置等级名称与所需经验。

交互设计

3 条关键交互的分步流程,按用户体验顺序描述,可直接作为前端开发与可用性测试脚本。

1

注册流程

  1. 1

    落地页点击「注册」,弹出侧滑面板而非整页跳转,降低流失。

  2. 2

    选择注册方式,OAuth 一键授权;邮箱/手机走验证码 + 密码两步。

  3. 3

    可选填写昵称与兴趣标签(选填,用于冷启动推荐,可跳过)。

  4. 4

    注册成功直接进入「选择社区」引导页,推荐 6–9 个热门社区一键订阅。

  5. 5

    首次进入首页展示轻量引导气泡,说明投票与评论的核心操作。

2

登录与令牌刷新

  1. 1

    提交凭证,服务端校验后返回 Access + Refresh Token,Refresh 写入 HttpOnly Cookie。

  2. 2

    前端将 Access Token 存内存,每次请求带 Authorization 头。

  3. 3

    Access 过期收到 401,前端静默调用 /auth/refresh 换新并重放原请求。

  4. 4

    Refresh 也失效则跳转登录,并保留原目标路径以便登录后回跳。

3

信任等级晋升

  1. 1

    后台任务每小时扫描用户行为指标(发帖数、被赞数、举报准确率)。

  2. 2

    满足阈值则写入 trust_level 并生成一条「等级提升」通知与站内祝贺卡片。

  3. 3

    若连续出现违规(被删帖/被举报成立)则降级,降级同样通知。

业务规则

6 条硬性约束。这些规则应当在服务层强校验,而非仅在前端提示。

R01

用户名唯一、3–20 字符、仅允许字母数字下划线,且与保留字(admin、mod、system 等)冲突时禁止注册。

R02

同一邮箱只能绑定一个主账号;OAuth 自动合并时以邮箱为主键。

R03

Access Token 有效期 15 分钟,Refresh Token 30 天且一次性轮换。

R04

TL0 用户每分钟最多发 1 帖、10 条评论;TL1 及以上逐步放开。

R05

改名 30 天一次,且历史更名在用户主页可查(防止冒充)。

R06

注销账号后,其公开内容保留但作者标记为 [deleted],评论区保留上下文完整性。

信任等级能力矩阵

TL0 · 新用户浏览、限频回复否无0.0需邮箱验证
TL1 · 基础发帖、回复、投票否1x0.5自动
TL2 · 成员上传图片、编辑自己的帖子否1x1.0自动
TL3 · 常客私信、发起投票帖、举报升级是2x1.5自动
TL4 · 领袖创建社区、审批举报、编辑他人帖子是3x2.0人工授予

涉及数据表

本模块涉及的 7 张表。完整字段、索引与说明见「数据表设计」页。

竞品参考

本模块的设计参照了哪些产品,具体参照了什么。

DI

Discourse

TL0–TL4 自动信任等级是免人工审核的最佳实践,直接借鉴。

RE

Reddit

发帖/评论 Karma 双维度分离,有效抑制刷分。

知乎

知乎

盐值体系将内容质量与信用分合并为单一健康度指标。

V2

V2EX

积分与铜币形成软性准入,值得参考其「消耗型」设计。

验收指标

本模块交付时应当达到的量化目标。未达标即视为该模块未完成。

注册转化率落地页 → 注册完成 ≥ 35%
登录成功率≥ 99.5%(不含密码错误)
TL1→TL2 晋升率首次注册 7 日内 ≥ 40%
会话泄露拦截Refresh 重放 100% 可检测并吊销

避坑清单

竞品踩过的坑,以及本模块在实现时最容易犯的错误。

  • 不要在注册环节强制收集过多信息,每多一个必填字段都会显著降低转化。

  • Karma 若直接展示为「军功章」会诱导刷分,建议弱化展示、强化权重用途。

  • 用户名与昵称必须分离,否则改名会破坏历史链接与 @提及。

  • Token 存储禁止写入 localStorage,避免 XSS 直接窃取。