跳到主要内容

UI 设计极简教程 Part 2

· 阅读需 2 分钟

如何设计优雅的 UI?答:小处落笔、主次分明、布局清爽、文字易读、色彩丰富、层次自然、图不逾矩、画龙点睛、生生不息。

此为 Part 2,前见 Part 1

色彩丰富

  • 从设计师的角度来看,HSL 色盘比 RGB 有用,因为其中的参数是人眼能够感知的:

    • 色相 hue 彩色色轮上颜色的位置/角度
    • 饱和度 saturation 是灰还是艳?0% 是灰色,100% 是最艳丽
    • 亮度 lightness 是黑还是白?0% 是纯黑,100% 是纯白,50% 是色相上的纯彩
  • 你需要的色彩远比你想象的要多,五六种是远远不够的

    • 总体分为三种,每种里面的每一个颜色 7 个选择
      • 灰色
      • 主色
      • 特色 accent colors
  • 从预定义的颜色里挑选

    • 如何定义色库是真正考验功力的工作,因为少有经验,得靠眼力
    • 先找最深和最浅的颜色,然后再找中间的
  • 找深色的时候,可以稍微把 hue 调节 30 度以内,补充单独改动另外两个所造成的色彩不足

  • 同理,灰色也不需要是纯灰,可以加一些其他颜色;有些灰色是冷色调的,有些灰色是暖色调的

  • 为了解决 accessibility,不一定需要只改 saturation 和 lightness 让元素更明晰,你其实也可以改 hue,只要相对明晰即可,这样就不必变丑了

  • 不要只靠颜色区分元素,还有很多其他的方法甚至能够达到更好的效果

UI 设计极简教程 Part 3

· 阅读需 5 分钟

如何设计优雅的 UI?答:小处落笔、主次分明、布局清爽、文字易读、色彩丰富、层次自然、图不逾矩、画龙点睛、生生不息。

此为 Part 3,前见 Part 1, Part 2

层次自然

  • 为什么有些元素看起来凹凸有致?因为它们有自然的 shadow 效果。然而这真的值得你花上几个小时的时间去 tweak 吗?

  • 当元素在 z-axis 上提起来靠近用户的时候,会得到更多的注意力,也是 shadow 实现的

  • 高阶的 shadow 使用法甚至会有两个 shadow,一个是环境光产生的 shadow,一个是直射光产生的 shadow

  • flat design 也可以有层次感,一是用颜色,较亮的颜色看上去比较近,较暗的颜色看上去比较远;二是用垂直 offset 无 blur 的纯色的 shadow 比如 box-shadow: 0 4px 0 hsl(220,8%, 80%);

  • 覆盖元素以产生层次感

    • 比如使用负数的 margin 比如 margin-bottom: -72px; 以覆盖两个背景元素,甚至覆盖三个元素 margin: -72px 0 -72px 0;
    • 类似地图片也可以覆盖两个背景区域,但是为了让图片更明晰,可以加上纯色的 border 区分一下

图不逾矩

  • 优雅的设计会在意每一张图片的使用,你应该使用高质量的图片;图片的使用要讲规矩

  • 在图片上放文字,为了让文字更清晰,可以

    • 覆盖灰色的一层,以加灰背景
    • 降低图片对比度,以加白背景
    • 调节图片为单一颜色,以加深背景
    • 给图片加 shadow
  • 图片有它自己的适用大小,不要随意改变它的 scale

    • 不要放大 icon,可以给它加纯色的圈圈
    • 不要缩小截图,上面的文字会看不清;你可以
      • 在小 screen 上截图
      • 截图本身只截重点区域
      • 非要截大图的话,用线条来取代小字,就没有读不清的问题了
    • 也不要缩小 icon,根据实际需要重新画
  • 注意用户上传的图片

    • 展示的时候如果大小不一致会很乱,可以用 backgroundSize: "cover", backgroundImage: url(...);
    • 图片颜色混原本的背景颜色会看上去很奇怪,这时候用内阴影或外阴影比较合适

画龙点睛

  • 你不必总是增加新的元素以增加设计感,修改 default 的配置就能够很好看,比如
    • 将列表的子弹点换成 icon
    • 给超链接加颜色和 weight,或者有眼色的粗下划线
    • 改动 checkbox 和 radio button 之类元素的缺省设置
  • 给一侧的边界加有色 border
  • 给背景加颜色、或者低对比度的纹理和插图
  • 给 empty states 加单独的设计
  • 减少 border 的使用,想要区分颜色的边界,可以用 box-shadow、颜色或者间隔 (spacing)
  • 不拘一格,列表不一定是单列的罗列,可以是多列的卡片;表格不一定是单排的,可以是复杂和多排多彩的;单选不一定是 radio button,可以是卡片

生生不息

生活中处处是设计,用一双设计师的眼睛看世界,反复记录与分析

然并卵探测器

· 阅读需 4 分钟

商业世界喜欢潜移默化地影响你,它背后的意图可能是为了引导你购买、认同它的品牌、或者纯粹是想要得到你的注意力。这给本就复杂的世界添加了一层无所不在的人为的噪音。Ray Dalio 的工作原则 2.4 说,要记住很多人只是假装为你工作,而实际上是在追求一己私利;他给的建议是注意其中的连带利害关系,不要太天真。

如何判断某些人或者事物真的对自己有帮助?培养自己的"然并卵探测器",时常心中默默发问:你说得都很对,然而真的有用吗?这些都是你们口中的好东西,但是跟我又有什么关系?这样就能够衍生出一系列的与商业社会的相处之道:

  1. 不购买自己不需的东西,不投资自己不懂的公司
  2. 区分集体的成就和个人的成就,个人成就可以和集体成就 align,但是这个 alignment 必须是自己定义的而不是别人给的
  3. 不用刻意巴结资本家,他们不会因为你是朋友而给你钱,他们只会因为你有价值而给你钱 在 AI 的时代,大家最终都会找 AI 做事情,为什么通过你来找 AI 做事情?因为你是他们的朋友,你是一个有趣靠谱的人!
  4. 这些都是好东西,然而跟我没关系。比如:
    1. 读大多数书的方法应该是先看标题和目录,大部分内容略读,少部分内容精读
    2. 不要在所谓的大师身上花费太多时间
    3. 共识不等于 insight
  5. 行为比知识更重要,已知和未知的边界比内部更重要
  6. 判断一个人的建议是否对你真的有帮助,要关注这些内容是否贴合你的具体情况

当然,大量的新信号必然夹杂着大量的新噪音,为了避免固步自封,该多听的还是得多听,具体接受不接受自己决定。

这跟忽悠(bullshit)探测器有什么区别?"忽悠探测器"针的是对人与人之间的具体的交流沟通,而"然并卵探测器"针对的是人与商业社会的关系。

UI 设计极简教程 Part 1

· 阅读需 5 分钟

如何设计优雅的 UI?答:小处落笔、主次分明、布局清爽、文字易读、色彩丰富、层次自然、图不逾矩、画龙点睛、生生不息。

小处落笔

  1. 要从功能入手,不要从布局入手
  2. 从小处入手,从灰度入手,逼你先把主次、布局、比较、尺寸想清楚,然后再考虑颜色
  3. 不要过度设计,因为设计远没有用户实实在在用得上的产品重要
  4. 小步迭代,人们容易低估实现的难度
  5. 产品的个性由字体、颜色、border radius、语音等等元素共同决定。比如,越圆越活泼,越细直越严肃;蓝色不会错,金色昂贵与复杂,粉色活泼。注意不要从你的竞争对手那儿借鉴太多 :)
  6. 限制选择,把通用的参数都提前设置好,拿来即用即可,看起来更好看,做起来也更简单

主次分明

  1. 人的注意力有限,都是重点等于没有重点
  2. 尺寸大小不等于重点,应综合考虑两到三种 font-weight, 两到三种颜色
  3. 可以使用白底灰字来弱化文字,但是不要用彩底灰字,而是应该用彩底彩字
  4. 弱化与强化混用,而不是只用强化或者只用弱化
  5. 尽量不要用标签 (label: blah) ,有时候你跟不不需要标签,直接上值即可;有时候你可以把标签和值组成简短的句子;根据标签和值的重要性相应地强化和弱化
  6. 文档 tag 大小不等于 UI 的大小,比如你常用 h1 做页面标题,而实际上页面标题没那么重要,应该使用常规大小和字体
  7. weight 和 color 都可以起到强化和弱化的作用,要综合考虑
  8. 如果有并列的三种操作的 button,要区分 primary, secondary, tertiary

布局清爽

  1. 从宽松的布局开始,因为 spacing 减起来容易加起来难
  2. 从设计系统中选 spacing
  3. 你不需要占据整个屏幕,你可以居中或者加 column
  4. 有些元素不要用比例,而应该用定宽,比如左侧导航栏、占据一个 column 的 icon 的宽度;form 不在迫不得已的情况下不用缩小
  5. 不要同比放大和缩小一个组件的所有的元素参数,而是应该在不同大小的情况小具体设计
  6. 相关的东西要放在一起,间隔不相关的的东西

文字易读

  1. 从设计系统中挑选 font-size,别用 em 因为它是当前字体的相对值
  2. 挑个好字体;从系统字体或者流行的字体开始总是不会错;有些字体是为标题而生,它们的水平间距更短小写字母更矮;有些字体是为了小尺寸而生,它们的水平间距更大小写字母更高;从卓越的设计那里偷师。培养直觉。
  3. 注意文字段落不要太宽
  4. 同一水平的不同文字,应该使用基准线对齐,align-items: baseline 而不应该用居中
  5. 行高会决定用户是否能够轻易地将目光转移到下一行,宽段落用 2 倍行高,窄段落用 1.5 倍行高;小字用大行高、大字用小行高
  6. 不是每个超链接都需要颜色或者下划线的
  7. 多段短文可以居中对齐,多段长文要居左对齐;数字要居右对齐
  8. 如果段落中单行的文字的分布因为词长而不对劲,考虑使用 hyphens: auto;
  9. 调节 letter-spacing 参见上面条目 2,如果调大适宜小尺寸的字体要注意缩减 letter-spacing

什么是创新者的窘境?

· 阅读需 4 分钟

本书的核心问题是,为什么大公司打赢了每一场战斗,却输掉了整个战争?

本书的核心答案是,因为大公司擅长做延续性技术,不擅长做破坏性技术。

以下是解释:

什么是窘境?窘境是不得不在两个或者多个选择中做出艰难决定的情境,而其中的选项是决策者在感情上不讨喜的。

什么是技术?输入低价值的产品和服务,产生高价值的产品和服务的过程。

什么是延续性技术?一类技术,用于增强主流消费者看重的那些成熟产品和服务。

什么是破坏性技术?一类与延续性创新价值主张不同的产品,虽然现在可能产品的性能要低于主流市场的成熟产品,但是它们拥有一些边缘消费者所看重的其他特性,通常价格更低、性能更简单、体积更小、更方便使用;而其未来增长的 S 曲线会极快地超越主流市场的主流产品。

什么是创新者的窘境?听客户的话只做延续性技术会丧失下一波革命的机会;而自我革命做破坏性技术的机会成本高,相对风险大、短期看不到成果、不会讨好主流客户;所以决策者到底应该怎么选?

在满足第一 S 曲线的同时能否轻易地做第二 S 曲线?难,因为 the evolution of product competition 在每个阶段是不一样的,有四个阶段,分别是性能、可靠性、便捷性、价格。其中组织在每个阶段的能力不一定是互通的。

“不擅长做破坏性技术”意味着大公司完全做不出来破坏性技术吗?不是,他们能够做出来,可是即便做了出来,这些破坏性技术也不适用它们现有市场,而适用这个技术的新市场却尚不明晰或者体量太小,总体而言无法产生短期效益以预测未来的 S 曲线。发现新兴市场必然是一个与失败为伍的过程。

管理破坏性技术变革的指导原则

  1. 客户和投资者决定企业的资源分配
  2. 小市场不能解决大企业的增长需求
  3. 破坏性技术的 S 曲线是难以预测的,无法对不存在的市场进行分析
  4. 机构的能力不等于机构内部组成能源的能力
  5. 技术供给不等于市场需求

所以大公司应该如何与小公司竞争?

  1. 确保破环性创新-独立的机构-市场是 fit 的
  2. 组织内有足够的资源能够流向这些独立的机构
  3. 为失败做好准备
  4. 主动为破坏性创新寻找新兴市场

技术领导力雷达

· 阅读需 4 分钟

如何评估技术领导者的表现?每个公司或个人都有自己的工程标准。而这些标准通常专注于特定角色 - IC(软件工程师、产品经理、设计师)或工程经理。是否存在一个统一的框架来评估技术领导者可能带来的潜在商业影响?以下是要求:

  1. 全面覆盖
  2. 可操作性
  3. 可参考以建立强大的团队

我自己和我的朋友们的回答

  • 决策能力:战略、战术和更快地做出基于事实的决策。从小胜利逐步推进到更大的胜利,惠及个人和组织。收集信息,诊断以获得见解,制定指导政策并采取一致行动。区分事实与观点,确保选项具有可信度。探索整个过程中的创新,创新意味着做出改变,使事情变得更好10倍。在时间窗口内快速做出初步决策,反思结果,然后在生命周期/年/季度/周的层次中迭代。

  • 执行引擎:建立系统以提供更多并提高质量,而不是为少量交付物感到自豪。关注细节。推动跨职能团队朝着你的独特愿景前进。根据客户的要求平衡速度、质量和范围。

  • 领域专业知识:追求不可教授的特殊知识。亲身经历。市场奖励独特性。

  • 产品意识:培养对优秀产品的直觉。用数据感知市场和行业。以适当的流程构建和运营产品。在大局中与其他元素综合。发明和简化。计划和管理变革。以客户为中心。

  • 人员与文化:与他人合作:与人共同塑造世界。以身作则。团队合作。让人们快乐,然后提高生产力。经常对人和项目进行分类/保持专业判断。用内在和外在动机激励人们。组织 = 人 + 文化。既有能力又温暖。讲述一个首先激励自己热情的故事。赋权于人们以实现更多。自我驱动。倾听他人并激励他们分享。招聘和指导团队。谦逊,低自我。最佳想法胜出。成长心态。

  • 协同与机智:对资源进行对齐或连接。1 + 1 > 2。优化客户、分销渠道、产品、人员、技术和资本的网络。长期进行声誉游戏。让更多人变成利益相关者,并朝着共同目标对齐。

DC/EP与央行数字货币

· 阅读需 4 分钟

DC/EP 是央行数字货币电子支付 Digital Currency Electronic Payment 的缩写

  • 是:一个双层的研发与试点项目计划
  • 不是:一个支付产品

电子支付的现状

中国一大半的人口已经用上了电子支付,个人消费中一大半的支付手段是移动支付

DC/EP 想要解决什么问题?

  1. 消费者需要更好更便宜的支付手段,核心用例是零售
  2. 手机整合取代了很多东西比如身份证、钥匙、钱包
  3. 商家的应用场景既有线上的也有线下的
  4. 鼓励上层各种机构的竞争与创新
  5. 保护隐私

双层体系

  • 第一层是央行
  • 第二层是商业银行、电信营运商、互联网支付平台

第二层有动机和成本去把工作做好,第一层会确保第二层承担足够的风险和责任。

如何推进?

小国比较简单,一年就能将纸币更换到塑料钞票;而中国每一次人民币更新换代都花了10年左右,而仍然有很多遗留问题。好在多个方案并行也不是不可以,因此方案的持续的可拓展很重要。

央行的主要任务之一是维持币值稳定

  • 研发重点不在数字货币产品本身,而在于结算和清算。
  • 提高不同的支付产品的连通性
  • 准备好应急和替代方案

主要的技术方案

  1. 以账户为基础的电子钱包,商户使用二维码
  2. NFC

其他的比如银行卡,IC卡

隐私保护

既要保护用户隐私,但是不能 100% 匿名,要接受权威机构的监管。

区块链的问题

其中的备选方案区块链和分布式记账还在研发中,但是

  1. 吞吐量不足,无法支持零售的用例
  2. 不可篡改性与把付错钱后冲销 charge back 的需求有冲突

跨境支付

Libra 把跨境汇款作为应用的侧重点是有问题的,因为零售终端不能直接使用导致存在跨境两边的两次兑换的问题。

各个国家国情不一样导致阻力很大,比如国际上大家都关心反洗钱、反恐、反资毒,而中国还会关注反赌博。很多国家有防止美元化的需求。

迈克尔波特的五力分析模型

· 阅读需 1 分钟

分析企业的竞争环境有哪些主要的考虑因素?

新玩家、老玩家、我买的、买我的、其他维度可以替代我的。

竞争力的本质是什么?

不可替代性,即高需求的独特性 (uniqueness in high demand)。

技术领导力雷达

· 阅读需 3 分钟

通常的 engineering rubrics 专注于某个具体的领域,比如 IC (软件工程师、产品经理、设计师) 或者 manager,能否提出一个大一统的框架,以衡量技术工作者的商业影响力?有这样一些要求

  1. 全面
  2. 可执行
  3. 对组建团队有指导意义

我和朋友们的答案

  • Decisiveness 决策力:战略、战术、决断力。为自己或者别人的个人或组织做合适的/赢面最大的决定。搜集信息、诊断以得到 insight、提出有效的策略和执行方案。创新。在机会窗口内/限定时间内/没有所有信息/无法准确预测未来的时候,快速决策,在迭代中改进

  • Execution Engine 执行引擎:打造一个执行引擎而不是执行本身,以有效地影响自己和他人的产出、根据需求精准地调和速度/质量/范围, craftsmenship

  • Domain Expertise:special knowhow, been there/done that, uniqueness

  • People and Culture:Work with others: shaping the world together with people. Lead by example. 团队合作、人力管理、绩效与激励、文化、价值观、能干 + 温暖、心态、热情、自我驱动力、倾听与分享、hiring and coaching team、humility, low ego. best idea wins. growth mindset

  • Product-Sense:好的直觉、对市场和数据的理解、产品管理(包括运营)、项目管理、协同/synthesize、发明与简化、计划与变化、对客户的 obsession

  • Synergy & Resourcefulness: 资源整合力,全局上对客户、渠道、产品、人、技术、资本的网的优化,公司内部结交利益同盟并且有效协调不同组织的 alignment

微服务中的身份验证和授权

· 阅读需 12 分钟

需求

  • 设计一个从简单开始但可以随着业务扩展的身份验证解决方案
  • 考虑安全性和用户体验
  • 讨论该领域的未来趋势

大局观:身份验证(AuthN)、授权(AuthZ)和身份管理

首先,回归基础

  • 身份验证:确定你是谁
  • 授权:确定你可以做什么

在开始时……让我们有一个简单的服务……

  • 分层架构
  • 客户端存储一个cookie或token作为登录状态的证明。(代客钥匙模式)

  • 服务器持久化相应的会话
  • token通常采用JWT格式,由从安全位置(环境变量、AWS KMS、HarshiCorp Vault等)获取的密钥签名

  • 流行的Web框架通常提供开箱即用的身份验证解决方案

然后,随着业务的增长,我们用AKF规模立方体来扩展系统:

  • X轴:水平克隆
  • Y轴:功能分解
  • Z轴:分片

加上康威定律:组织设计的系统反映其沟通结构。我们通常将架构演变为微服务(参见为什么选择微服务?了解更多)

  • 顺便说一句,“微服务与单体”和“多仓库与单仓库”是不同的概念。
  • 对于企业,有员工身份验证和客户身份验证。我们更关注客户身份验证。

在微服务世界中,让我们抽取身份验证和授权服务的功能切片,并有一个身份和访问管理(IAM)团队在进行相关工作。

  • 身份感知代理 是一个反向代理,允许公共端点或检查受保护端点的凭证。如果凭证未提供但被要求,则将用户重定向到身份提供者。例如:k8s ingress controller、nginx、envoy、Pomeriumory.sh/oathkeeper等。
  • 身份提供者和管理者 是一个或几个通过某些工作流(如登录、忘记密码等)管理用户身份的服务。例如:ory.sh/kratoskeycloak
  • OAuth2和OpenID Connect提供者 使第三方开发者能够与您的服务集成。
  • 授权 服务控制谁可以做什么。

身份验证

身份提供者

  • 最简单的解决方案是提交用户的身份证明并发放服务凭证。
    • bcrypt、scrypt用于密码哈希
  • 然而,现代应用程序通常处理复杂的工作流,如条件注册、多步骤登录、忘记密码等。 这些工作流本质上是状态机中的状态转换图。

工作流:用户设置和个人资料更新

Ory.sh/Kratos作为示例架构

2. 第三方OAuth2

OAuth2让用户或客户端经历四个主要工作流(不确定使用哪个?请查看这个),如

  1. Web的授权码授权
  2. 移动的隐式授权
  3. 传统应用的资源拥有者密码凭证授权
  4. 后端应用流的客户端凭证授权

然后最终获得访问令牌和刷新令牌

  1. 访问令牌是短期有效的,因此如果被泄露,攻击窗口很短
  2. 刷新令牌仅在与客户端ID和密钥结合使用时有效

假设在这个工作流中涉及许多实体 - 客户端、资源拥有者、授权服务器、资源服务器、网络等。更多的实体会增加被攻击的暴露。一个全面的协议应该考虑所有边缘情况。例如,如果网络不是HTTPs /不能完全信任怎么办?

OpenID Connect是基于OAuth2的身份协议,它定义了可定制的RESTful API,供产品实现单点登录(SSO)。

在这些工作流和令牌处理过程中有很多棘手的细节。不要重新发明轮子。

3. 多因素身份验证

问题:凭证填充攻击

用户倾向于在多个网站上重复使用相同的用户名和密码。当其中一个网站遭遇数据泄露时,黑客会使用这些泄露的凭证对其他网站进行暴力攻击。

  • 多因素身份验证:短信、电子邮件、电话语音一次性密码、身份验证器一次性密码
  • 速率限制器、失败禁止和异常检测

挑战:电子邮件或短信的送达率差

  • 不要将营销电子邮件渠道与事务性渠道共享。
  • 语音一次性密码通常具有更好的送达率。

5. 无密码

  1. 生物识别:指纹、面部识别、声音识别
  1. 二维码
  • SQRL标准
  • 另一种实现方式:

  1. 推送通知

客户端如何订阅服务器的状态?短轮询、长轮询、WebSocket或服务器推送事件。

4. 市场上的供应商

不要重新发明轮子。

6. 优化

挑战1:Web登录非常慢或根本无法提交登录表单。

  • JS包对于移动Web来说太大
    • 构建一个轻量级的PWA版本的SPA(单页面Web应用)。无论如何使包小 - 例如,preact或inferno
    • 或者根本不使用SPA。简单的MPA(多页面Web应用)与原始HTML表单提交效果很好
  • 浏览器兼容性
    • 使用BrowserStack或其他工具在不同浏览器上进行测试
  • 数据中心距离太远
    • 将静态资源放到边缘/CDN,并通过Google骨干网中继API请求
    • 建立一个本地数据中心 😄

请参见Web应用交付优化以获取更多信息

挑战2:账户接管

挑战3:账户创建耗时过长

当后端系统变得过于庞大时,用户创建可能会分散到许多服务,并在不同数据源中创建许多条目。在注册结束时等待15秒感觉很糟糕,对吧?

  1. 收集并逐步注册
  2. 异步

授权

isAuthorized(subject, action, resource)

1. 基于角色的访问控制(RBAC)

2. 基于策略的访问控制(PBAC)

{
"subjects": ["alice"],
"resources": ["blog_posts:my-first-blog-post"],
"actions": ["delete"],
"effect": "allow"
}

挑战:单点故障和级联故障

  • 预处理和缓存权限
  • 利用请求上下文
    • 假设:数据中心内部的请求是可信的,而外部请求则不可信
  • 失败开放与失败关闭

隐私

1. 个人可识别信息(PII)、受保护的健康信息(PHI)、支付卡行业(PCI)

西方文化有尊重隐私的传统,尤其是在纳粹杀害数百万人之后。 以下是一些典型的敏感数据类型:个人可识别信息(PII)、受保护的健康信息(PHI,受HIPAA监管)和信用卡或支付卡行业(PCI)信息。

2. 差分隐私

仅仅删除敏感信息可能不足以防止与其他数据集相关的数据泄露。

差分隐私帮助分析师从包含个人信息的数据库中提取数据,但仍然保护个人隐私。

3. 去中心化身份

为了将身份与集中式身份提供者及其相关的敏感数据解耦,我们可以使用去中心化身份(DID)

  • 它本质上采用URN格式:did:example:123456789abcdefghijk
  • 它可以从非对称密钥及其目标业务领域派生。
    • 与传统方式不同,它不涉及您的个人信息
    • 请参见DID方法了解其如何与区块链一起工作。
  • 它通过以下方式保护隐私
    • 为不同目的使用不同的DID
    • 选择性披露/可验证声明

想象一下,艾丽斯有一个州政府颁发的DID,想在不透露真实姓名和确切年龄的情况下购买一些酒。

饮酒

一个DID解决方案:

  • 艾丽斯有一个身份档案,包含did:ebfeb1f712ebc6f1c276e12ec21、姓名、头像URL、生日和其他敏感数据。
  • 创建一个声明,表明did:ebfeb1f712ebc6f1c276e12ec21超过21岁
  • 一个受信任的第三方签署该声明,使其成为可验证声明
  • 使用可验证声明作为年龄的证明

总结

本文概述了微服务中的身份验证和授权,您不必记住所有内容才能成为专家。以下是一些要点:

  1. 遵循标准协议,不要重新发明轮子
  2. 不要低估安全研究人员/黑客的力量
  3. 完美是很难的,也不必完美。全面优先考虑您的开发工作