惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
Cyberwarzone
Cyberwarzone
L
LINUX DO - 最新话题
N
News and Events Feed by Topic
T
Troy Hunt's Blog
Help Net Security
Help Net Security
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
Security Archives - TechRepublic
Security Archives - TechRepublic
M
MIT News - Artificial intelligence
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V2EX - 技术
V2EX - 技术
Y
Y Combinator Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
大猫的无限游戏
大猫的无限游戏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
T
Threatpost
Recent Commits to openclaw:main
Recent Commits to openclaw:main
S
SegmentFault 最新的问题
I
InfoQ
H
Hacker News: Front Page
D
Docker
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Blog — PlanetScale
Blog — PlanetScale
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
Netflix TechBlog - Medium
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
博客园 - 【当耐特】
T
Tor Project blog
U
Unit 42
H
Heimdal Security Blog
Microsoft Azure Blog
Microsoft Azure Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Privacy & Cybersecurity Law Blog
PCI Perspectives
PCI Perspectives
美团技术团队
O
OpenAI News
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog
GbyAI
GbyAI
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
MyScale Blog
MyScale Blog

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理, 企事业单位数字化的业务供需本质 – 人人都是产品经理, 医疗智能体·第1讲——医疗信息化重构:从“辅助软件”到“自主智能体”的范式转移 – 人人都是产品经理, 粉丝量就是空气!!! – 人人都是产品经理, 用户说“薯片碎了”,机器回“要买吗?”:意图识别的翻车与破局 – 人人都是产品经理, RAG召回准确率从75到90 我做对了这三件事 – 人人都是产品经理, AI大事件:Anthropic改收费、OpenAI发安全版、手术机器人纳入医保、阿里发布”秒悟” – 人人都是产品经理, Chrome 推出 Skills 新功能,Agent 重塑上网方式 – 人人都是产品经理, GitHub前创始人拿了a16z的1700万美元,做Agent时代的Git – 人人都是产品经理 拷贝或克隆其他 Flutter OH 项目到本地后无法运行 – 人人都是产品经理, 优惠券设计:优惠券创建 – 人人都是产品经理, 不用死磕文档!AI 助手 1 小时搞定飞书 CLI 安装 + 配置 + 知识库 – 人人都是产品经理, 用小龙虾做竞品分析报告:从2天到20分钟,我是怎么做到的 – 人人都是产品经理 用小龙虾做市场分析报告:搞懂这3个公式,市场规模不再靠猜 – 人人都是产品经理, 你早就在做 Harness 工程,只是不知道它叫这个名字 – 人人都是产品经理, Think Long就够?你可能想多了! – 人人都是产品经理, 货代SRM实战:供应商准入怎么做,才能让资源池不是通讯录而是可交付网络? – 人人都是产品经理, 如何做好用户调研?详解基本技巧 – 人人都是产品经理, 木鸟、途家、美团对打,平台春天行动开“卷” – 人人都是产品经理, 入职才发现公司不靠谱?小红书从业者求职避坑指南 – 人人都是产品经理, 美国 AI 三巨头联手封堵,中国 AI 突围之路在何方 – 人人都是产品经理, 小红书,放在需求对面的镜子 – 人人都是产品经理, AI 会带来大规模失业吗? – 人人都是产品经理, 从出单到补货前,我第一次犹豫:该不该放大? – 人人都是产品经理, Flutter 三方库鸿蒙化适配:5 种高效检查方式,快速判断是否需要适配 – 人人都是产品经理, 从做产品进阶拿结果:医美机构产品经理转岗科室运营经理 – 人人都是产品经理, 阿里HappyHorse,一场关于“Token经济”的阳谋 – 人人都是产品经理, To B AI:客户留存落地的观察与思考 – 人人都是产品经理, AI产品的“生命线”——数据采集、标注、清洗的产品化设计 – 人人都是产品经理, 谈谈AI Agent(二):当“孩子”能自己“体验世界”时,你该学什么? – 人人都是产品经理, UI/UX设计师的3层能力进阶,前两层让你活下来,第三层…才是真正的分水岭 – 人人都是产品经理, 2分钟 → 30秒,效率提升75%:B端产品经理如何用「规则枷锁」驯服AI幻觉? – 人人都是产品经理, 还没来得及学OpenClaw,来了个更猛的:Hermes Agent – 人人都是产品经理, AI日报:宇树机器人跑出10m/s刷新世界纪录 – 人人都是产品经理, 一文说透基金互金如何用情绪价值引导用户决策做转化 – 人人都是产品经理, 当浏览器开始替你”看”网页:AI 浏览器正在亲手拆掉它脚下的那张网 – 人人都是产品经理, 0代码,一天时间我Vibe Coding了个网站 – 人人都是产品经理, Hermes 和 OpenClaw 之争,Agent 的能力应该“装上去”还是“长出来”? – 人人都是产品经理 视频生成的“桌子”,字节Seedance 2掀完,阿里快乐马掀 – 人人都是产品经理, 从听不懂到完全信任:我的 Codex 深度产品体验 – 人人都是产品经理, 当虚拟偶像有了北京户口,与真人偶像还有什么区别? – 人人都是产品经理, 会说,远远比会做更重要 —— 对 SBTI 爆火现象的五层观察 – 人人都是产品经理, AI产品经理必看:当“搭环境”比“选模型”更重要,你的认知还在2024年吗? – 人人都是产品经理, 2026年AI产品商业化核心逻辑:从功能demo到规模化营收的3个必破卡点 – 人人都是产品经理, 京东围绕供应链,卷起裤腿下场的那些事儿 – 人人都是产品经理, SBTI一夜刷屏:它赢在了“太会说人话” – 人人都是产品经理, 折扣零售的真相:不是便宜,而是价值感! – 人人都是产品经理, 和甲方吵了一架,最后加钱做了——我学到的ToB产品经理生存法则 – 人人都是产品经理, 和几位小红书操盘手聊了8小时,干货全在这 – 人人都是产品经理, 智谱GLM-5.1登场,开源模型首超Opus4.6!!! – 人人都是产品经理 Anthropic收入凭什么反超OpenAI,终于有人把这事说清楚了 – 人人都是产品经理, 史上最有故事感的技术报告——Claude最强模型Mythos 7个极其精彩的细节 – 人人都是产品经理, 模型不是壁垒,Harness 也不是 – 人人都是产品经理, 抖音本地生活业务思考21 – 人人都是产品经理, Superpowers:145k Star的AI编码框架,到底是什么来头? Superpowers:145k Star的AI编码框架,到底是什么来头? – 人人都是产品经理, OpenAI 的路走错了,Anthropic Harness 解法启示:模型需要实践专科生 – 人人都是产品经理, 画原型图的前一步:设计站点地图 – 人人都是产品经理, 给 DeepSeek 的最后一封催更信 – 人人都是产品经理, 手把手教你用 Claude Code 搭建 AI 营销团队:5 个 Agent、12 项技能,独立完成研究、写作、设计全流程 – 人人都是产品经理, 你以为大模型在学语言?不,它在重新发明语言学 – 人人都是产品经理 所谓Skill,不过是AI时代的工业垃圾 – 人人都是产品经理, 聊一聊内容传播的几个方法 – 人人都是产品经理, 当平台开始吃掉生态:从 OpenClaw 被封杀,读懂 Anthropic 的这盘棋 – 人人都是产品经理, 你装了 10 个 AI 插件,Obsidian 还是一个文件夹 – 人人都是产品经理 关于AI智能体架构演进的系统性思考:从单体试水到多体协同的重构 – 人人都是产品经理, 当“人”变成Skill,我们又该何去何从? – 人人都是产品经理 Mythos 事件:前沿 AI 治理的意外实验 – 人人都是产品经理, 货代CRM:信用与风险管理怎么做,才能把坏账风险拦在放货之前? – 人人都是产品经理, 从HR收集自拍照到员工自助录入——我见证了园区人脸识别从”不可用”到”真好用”的全过程 – 人人都是产品经理 千问闯关AI混沌期:阿里画靶,吴嘉张弓,马云射箭? – 人人都是产品经理,
最佳实践・用户登录模块设计
B端产品大愚 · 2024-02-22 · via 人人都是产品经理

任何系统都少不了用户登录模块。一个安全、方便的登录模块可以成为系统与用户交互的良好开端。本文结合笔者的实际工作经验,以及相关知识的学习,旨在对登录模块的一般原理和设计方法进行一个系统性的阐述和总结,希望能够抛砖引玉,进一步深化自己对这一模块的认知。

一、生活中的登录场景

我们日常生活中已经习惯了这样的场景:访问一个系统,系统会要求我们输入用户名、密码(或者验证码等方式),如果正确,我们就登录进入这个系统了。接着系统会显示跟我们有关的信息,比如我们登录淘宝,就可以看到自己的购物车信息、历史购物记录等。

在这个简单的场景里,登录模块做了哪些处理呢?如何确保操作账号的人是账号真正的持有人呢?为什么只能看到自己的购物记录而不能看到别人的呢?要回答这些问题,可以借助4A统一安全管理平台解决方案这个框架来帮助我们思考。

二、4A安全管理框架——系统安全管理的最佳实践

在系统构成的虚拟世界里,用户相关的全部资源都以数字形式存在。登录模块是现实中的人进入虚拟世界的“门户”,其本质目的是实现安全管理,让拥有正确“钥匙”的人“进门”,并阻挡“非法入侵”。1995年,国际网安界最早提出了4A(认证Authentication、授权Authorization、记账Accounting、审计Audit)的概念,后为国内运营商所发展,形成了4A (账号Account、认证Authentication、授权Authorization、审计Audit)统一安全管理平台解决方案这一最佳实践:

1. 账号

账号可以看作是我们在这个虚拟世界里的一间房子,房子里放着所有我们在这个虚拟世界的资产,比如“身份证”(个人信息)、“存折”(银行卡信息)等。我们希望自己在虚拟世界中的资产得到保护,也希望离开这个虚拟世界后这些资产得到妥善的处置。随着欧盟的《GDPR》,我国的《数据安全法》、《个人信息保护法》等法规的出台,作为系统设计者,不单要考虑账号的注册场景,账号的删除场景也同样重要,一个设计良好的系统需要有完善的账号生命周期管理机制。

2. 认证

认证是门上的锁,没有锁的门别人是可以自由出入的,有了锁就可以确保只有我们自己才有钥匙可以进入。锁的形式多种多样,比如上面例子中提到的用户名+密码。锁非常关键,很多黑产的攻击目标就是这个环节,围绕认证的网络安全技术也在不断发展,比如多因素认证、登录加密、异地登录识别、设备更换识别、密码最大错误次数锁定、自动登出、多端登录提醒等。

3. 授权

授权就是定义每个人的房子里装哪些数据资产,我们的“身份证”不会放在别人房子里,别人的“存折”也不会放在我们的房子里,我们对自己房子里的资产拥有控制权限。C端场景下,通常用户的权限是统一的,有些产品有VIP的设定,其权限和普通用户不同,但也是有限的几类,因此权限管理相对简单。B端系统一般都是为了满足特定的管理目的而存在,管理职责因人而异,无法统一,自然权限管理就相对复杂。在设计B端系统前,应该先确定关键用户,了解他们的工作职责,从而对系统应该实现怎样颗粒度的权限管理形成认知。

4. 审计

审计相当于房子里的监控装置。即使锁再好,也不可避免被攻破,房子里装了监控,我们就可以在一些非法入侵事件发生之后去查看当时的情况,挽回损失或者避免损失扩大。所以我们需要对登录、密码修改等敏感操作生成日志,并对这些日志进行定期审阅。

通过上面的分析,我们就知道一个系统的登录模块需要包含的主要功能就是账号管理、认证管理、权限管理、日志管理几部分,下面就来介绍具体如何设计。

三、登录模块的设计要点

1. 账号与密码

设计账号表,最关键的问题是主键的选择(就是以什么作为一个账号的唯一标识)。在一个系统内,用户名、邮箱、手机号都是唯一的,理论上都可以作为主键,但实际上并不好用。

假如把用户名作为主键,下游的业务数据表中可能记录了用户名,例如一个电商平台记录一笔订单的创建人为用户名。这样的话修改用户名的场景就难以实现了,因为用户名一旦更改,用户将无法找回自己以前创建的订单。手机号、邮箱也存在同样的问题。

更好的做法是系统按照某种规则自动生成一串唯一字符作为一个账号的唯一标识,即账号表的主键,我们命名为UserId。

由于其没有任何业务意义,不存在修改的场景,因此可以保持稳定。用户名、手机号、邮箱等信息作为账号相关的属性,变更的场景就容易实现了。同时需要注意,在开发各类业务场景时,当需要记录操作人身份时,应该统一使用UserId。

大多数系统都提供了用户名+密码这一登录方式,管理密码最主要考虑的是安全问题。密码不可明文存储,否则当数据库被人恶意访问时,所有用户的密码都会被泄露。解决密码存储安全性问题,比较常用的方式是加盐哈希。

满足创建账号、设置密码、用户名+密码登录这些基本功能,账号表至少需要包含以下字段:

注:本文提到的表单字段仅为业务逻辑类字段,并非数据库建表实际字段。开发过程中一般都需要添加代码逻辑所必须的字段,如逻辑主键、创建时间、创建人、更新时间、更新人等,上文提及的加盐哈希需要额外存储密码盐值,为了保持登录会话可能需要添加字段保存token等,这些用于技术实现所必须的字段不在本文的讨论范围内。

用户注册、密码登录流程示例如下:

2. 手机号/邮箱登录

对于用户来说,记忆密码是不方便的,而且也存在安全隐患。手机号+验证码登录操作简单,用户接受度高,是国内普遍采用的注册、登录方式。在海外市场中,邮箱+验证码也是很常见的。为了实现手机号/邮箱的绑定/换绑、验证码登录功能,我们需要扩展账号表字段,至少需要添加手机号、邮箱2个字段:

手机号/邮箱的绑定/换绑、验证码登录流程基本相同,可以合并表示,具体见下图:

3. 第三方登录

为了简化用户注册流程,降低用户的注册成本,不少应用都提供了第三方登录方式,国内常见的有通过微信、QQ、微博等账号登录,海外常见的有通过Google、Facebook、Twitter等账号登录。例如下面这个登录页,底部提供了3种第三方登录方式:

第三方登录使用的主流授权流程是OAuth,各大第三方平台的开发者文档都有接入方式的详细说明。为了实现第三方登录,我们需要进一步扩展账号表字段。考虑到第三方平台有多个,可能会陆续接入,为了方便系统扩展,应该添加第三方平台类型字段,表示登录来源。用户通过第三方平台登录后,第三方平台会返回表示用户身份的唯一ID,我们需要将这个ID和自建系统的UserId进行关联,因此也需要一个字段记录。具体如下:

由于登录过程引入了第三方平台,登录流程更加复杂了,可以参考下面这个时序图来理解整个第三方登录的过程:

4. 权限管理

用户成功登录系统后,接下来就需要知道这个用户可以访问哪些资源、可以执行哪些功能。例如在一个组织的HR系统内,每个人只能看到本人及下属的考勤记录,这就是一种对数据的权限控制;又如系统管理员可以修改员工信息,普通用户只能查看员工信息,这就是一种对操作的权限控制。

在访问控制领域,广泛采用的权限模型有RBAC(基于角色的访问控制)和ABAC(基于属性的访问控制),二者也可以结合使用。RBAC是通过把一组权限封装在一个角色中,再把角色授予用户,以此来实现灵活的权限控制。

RBAC的优点是操作简单,并能满足大部分场景下的访问控制要求。在RBAC模型中,用户与角色是一对多的关系。ABAC的控制规则是建立在一组“属性”上的。比如可以定义一个规则,仅允许人力资源部门的员工在9:30至18:30之间查看员工简历,“人力资源部的员工”是用户属性,“9:30至18:30”是环境属性。ABAC的优点是具有更多维度的控制变量,从而实现叫RBAC颗粒度更细的访问控制,但建立规则的过程也更加复杂。

本文以RBAC为例。在RBAC模型中,一个角色内包括多个权限项,一个用户可以有多个角色,结构如下图:

我们至少需要增加4张表来表示上述结构:

首先是用户角色表(user_role),用来表示用户和角色的关联关系,通过UserId与账号表(user_account)进行外键链接,用户登录后,可以在此表查找其拥有的角色。

然后是角色权限表(role_permission),用来表示角色和权限的关联关系,通过RoleId与用户角色表(user_role)进行外键链接,找到用户拥有的角色后,可以在此表查找这些角色内包含的权限。

另外还需要角色表(role_info)和权限表(permission_info),用于记录角色和权限的基本信息。

整体的数据结构如下:

5. 日志

在内部控制领域,控制分为预防性控制、检查性控制、纠正性控制3类。账号管理、认证管理、权限管理都属于预防性控制,即通过事先建立这些机制,可以保护用户数字资产的安全。而日志管理则是一种检查性控制,是一种事后的控制。当我们需要排查、诊断系统问题,追溯入侵事件时,有日志的帮助,可以大大提高分析效率。

对于登录模块,最基础的日志需要记录账号、登录时间、登录IP、登录设备等信息。登录后的操作日志,则需要根据不同的业务场景设计。为了平衡成本和收益,通常需要对敏感操作生成日志,而不是事无巨细地记录。比如某个表单中含有关键的数据,可以对这个表单中的新增、删除、编辑操作生成日志,编辑类操作还可以进一步记录编辑前、编辑后的信息。

6. 延伸思考

一般情况下,用户注册账号之后,系统还需要收集用户个人信息,例如头像、性别、生日、兴趣爱好、从事的行业、教育背景等,这些信息是否适合记录在账号表中呢?出于系统扩展性考虑以及解耦的思想,笔者认为另建一个用户信息表存储这些信息更好,虽然它和账号表是一对一的关系。账号表只负责账号、登录、认证功能。当然这个问题没有标准答案,合理即可。

本文由@武林 原创发布于人人都是产品经理,未经作者许可,禁止转载。

题图来自Unsplash,基于CC0协议。

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。