第 5 节:多个项目如何统一账号,并自动回到原项目
HORU 跨境社区实战 · 第 05 节
拆解统一 account 入口、来源提示、安全回跳以及旧账号兼容,避免让用户手动选择项目。
本文记录 HORU 跨境社区 的实际建设过程。HORU(horu.world)同时提供蜡笔小账本、租的值与博客,各项目使用统一身份入口。文中历史页面和验收记录按当时状态说明。
统一入口要保留来源
从记账页面打开登录,用户期待继续记账;从社区打开登录,用户期待回到社区。HORU 把登录和注册收口到 /account/,由入口自动携带项目来源和返回地址。页面展示当前场景的提示,不设置让用户重新挑选项目的选择器。这个决定减少了登录过程中的额外判断。
参数表达上下文,不决定权限
来源参数用于呈现文案和确定安全的后续路径。服务器仍需验证账号身份,并在进入项目时检查权限。把 project 改成另一个值,不应该让普通账号取得管理能力。同一个 HORU 身份可以使用多个产品,各产品的数据与角色仍由各自规则管理。
返回地址需要限制范围
登录成功后直接跳转用户提供的任意网址,会带来开放重定向问题。更合理的做法是只接受允许范围内的本地路径,并在解析失败时返回该项目的默认入口。还要检查双斜线、编码后的路径和不在允许范围内的管理地址。回跳成功与目标页面有权访问是两次不同检查。
旧账号是迁移的一部分
统一账号不能通过清空旧用户来完成。HORU 的记账旧账号和账本需要保留,原有登录方式也要考虑兼容。同一邮箱在历史系统中可能有不同密码或身份记录,这类冲突应先核验归属再关联。仅凭邮箱相同就覆盖另一份密码,会破坏已有用户的登录能力。
注册和找回共用身份体系
新用户在统一入口完成邮箱验证后创建身份,再进入来源项目。忘记密码同样需要围绕已经绑定的邮箱处理。前端提供入口只是开始,服务端必须执行验证、失效时间、尝试限制和密码更新等操作。不同项目的旧注册窗口也要收口,否则用户仍可能绕过新流程。
从入口逐一验证
把官网、博客、记账、租房和社区的所有登录按钮列出来,分别检查链接、场景提示和回跳。再用普通账号访问管理路径,确认服务端拒绝越权。验收不应只从 /account/ 直接打开,因为真实用户往往从其他项目进入,遗漏通常发生在这些入口。
把这一节用到自己的项目
先选一个真实入口或一条测试数据,按下面的顺序记录结果,再扩大检查范围。
- 各项目按钮均进入 account
- 返回地址限制在允许范围
- 普通用户不能通过来源参数越权
入口参数示例
/account/?project=community&return=%2Fcommunity%2F
这个地址表达社区来源和回到社区首页的意图。服务端仍需验证返回路径和目标权限,不能把 URL 参数当作授权凭据。

1 条评论
登录后即可参与讨论 💬
登录 / 注册后评论