尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Ente 共享相册的评论与点赞(Comments and Likes):端到端加密下的协作互动全指南

Ente 共享相册的评论与点赞(Comments and Likes):端到端加密下的协作互动全指南 Ente 共享相册的评论与点赞Comments and Likes端到端加密下的协作互动全指南【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente导读本篇技术指南围绕 Ente 的「评论与点赞Comments and Likes」功能展开说明它如何让共享相册、共享回忆Shared Memories与公共链接Public Links中的照片和视频具备互动能力同时在服务端不可见的前提下保持端到端加密。读完本文你将掌握评论/点赞的可用范围、移动端与 Web/桌面端的完整操作方式、公共链接匿名互动的配置与管理、Feed 社交动态的查看以及该功能在服务端表结构、加密载荷、触发器与约束的底层实现原理。功能概述什么场景下可以评论与点赞Ente 允许用户对共享的照片和视频进行评论与点赞。无论是与家人在度假相册中协作还是在婚礼相册中收集回忆评论与点赞都能让你与共享内容互动同时不牺牲端到端加密。官方文档comments-and-likes.md将其定位为共享协作能力的一部分与协作相册、公共链接共同构成完整的分享体系。可用范围评论与点赞适用于以下场景共享相册你分享给其他 Ente 用户的相册或他人分享给你的相册移动端共享回忆在查看由共享相册中照片/视频生成的回忆Memory时可以直接在回忆查看器中评论与点赞无需退出公共链接通过公共链接Public Link分享的相册包括收集链接Collect Link登录用户与匿名用户Ente 用户使用自己的账户评论公共链接访问者可以匿名评论。不可用场景未分享的私有相册不支持评论与点赞。工作方式与隐私前提所有评论与点赞都使用相册的加密密钥进行端到端加密。即使多人可以与你的照片互动Ente 的服务器也永远无法访问评论或点赞的明文内容。匿名评论者会被分配一个临时的、与该特定相册绑定的加密身份。这一点与服务端设计完全吻合在 server/pkg/api/comments.go 中创建评论的 API 只接收cipher与nonce字段均为必填binding:required服务端自始至终只存储密文与随机数明文只在客户端本地生成与解密。给照片和视频点赞Liking添加与取消点赞移动端在共享相册中打开一张照片或视频点击底部栏的心形图标点赞即时生效。Web/桌面端在共享相册中打开一张照片或视频在查看器中点击心形图标点赞即时生效。点赞后心形图标会被填充以表示你已点赞再次点击即可取消点赞。查看点赞列表移动端长按心形图标可查看点赞列表Web 端右键点击心形图标查看。列表中会显示 Ente 用户的名称以及来自公共链接的匿名点赞者的显示名称。评论照片与视频Commenting添加评论移动端在共享相册中打开照片或视频点击底部栏的评论图标底部弹出评论面板comments sheet输入评论最多 500 个字符点击发送按钮。Web/桌面端在共享相册中打开照片或视频在查看器中点击评论图标右侧打开评论侧栏输入评论后按 Enter 或点击发送。你的评论会立即对所有相册参与者可见。回复评论维护会话线程移动端长按评论气泡并选择「Reply」或在评论上向右滑动快速进入回复输入回复并发送。Web/桌面端右键点击评论点击回复图标输入回复并发送。回复会引用父评论的原文以保持上下文连贯。点赞单条评论移动端双击评论气泡快速点赞或长按评论并选择心形图标被点赞的评论右下角显示点赞数点击点赞数可查看点赞该评论的用户。Web/桌面端右键点击评论并选择 like。删除评论你可以删除自己的评论相册所有者owner和管理员admin可以删除任意评论移动端长按自己的评论选择「Delete」确认删除。Web/桌面端右键点击评论并选择 delete。多相册文件Multi-album files如果同一张照片出现在多个共享相册中你可以选择查看哪个相册的评论线程打开评论视图使用顶部的相册选择器下拉框切换相册查看不同的评论线程。同一张照片在每个相册中各自维护独立的评论与点赞。这一点在服务端实现上也有体现评论与点赞数据都以collectionID相册 ID为核心作用域进行组织详见后文服务端实现。公共链接上的评论与点赞匿名评论与点赞通过公共链接访问相册的人无需创建 Ente 账户即可评论与点赞。首次访问时会被引导输入一个显示名称用于标识其评论开始评论与点赞。显示名称以加密形式存储并与该访问者在该特定相册的浏览会话session绑定。管理公共链接的评论与点赞开启或关闭评论与点赞相册所有者可以控制公共链接是否允许评论与点赞打开相册设置Album settings进入「Manage public link」切换「Enable comments and likes」。关闭后评论与点赞功能及其按钮会从公共链接访问者界面中隐藏。谁可以删除公共链接上的评论匿名评论者可以删除自己的评论相册所有者和管理员可以删除任意评论包括匿名评论。这为通过公共链接收集内容如收集链接提供了有效的审核moderation手段。Feed社交动态总览Feed 功能提供所有共享相册社交活动的集中视图Feed 中会出现的内容你的照片收到的新点赞你的照片收到的新评论对你评论的新回复你参与的所有共享相册的活动。访问方式移动端打开Feed标签页浏览最近的社交动态。Feed 在公共相册上可用并且实时更新——当人们与你的共享内容互动时Feed 即时反映让你无需逐个检查相册即可保持对协作相册的关注。评论与点赞的限制为保证性能并防止滥用官方文档明确了以下限制限制项说明评论长度每条评论最多500 个字符匿名显示名称最多50 个字符多行支持评论支持跨多行便于排版每人的点赞数每个用户/匿名访客对每张照片最多1 个赞服务端实现中的限制印证服务端对载荷长度的校验与文档所述一致虽然校验以「加密后字节数」而非明文字符数为准在 server/pkg/api/comments.go 中maxCommentPayloadBytes 20 * 1024即单个评论的加密载荷最大约 20 KiB在 server/pkg/controller/public/social_limits.go 中匿名场景下maxCommentBytes 280解密后的明文字节上限、maxAnonNameBytes 50对应「匿名显示名称最多 50 字符」并定义secretBoxOverheadBytes 16nacl secretbox 的密文附加开销该校验会先 base64 解码cipher再按len(data) - 16计算真实明文长度小于 16 字节的载荷会被视为非法cipher too short。也就是说Ente 用户在相册内的 500 字符上限由客户端约束公共链接场景则在服务端同时校验密文长度20 KiB与匿名场景的明文长度280 字节与名称长度50 字节。多行支持是客户端渲染能力服务端存储层不做明文感知。平台可用性移动端iOS 与 Android完整支持评论与点赞可添加、查看、回复、点赞与删除Feed 功能可用支持交互手势双击点赞、滑动回复。Web 与桌面端完整支持评论与点赞可添加、查看、回复、点赞与删除。服务端实现加密数据模型与完整性约束为了更深入理解「端到端加密的评论与点赞」在服务端的落地可以结合仓库源码查看其数据模型与约束。领域模型server/ente/social三个核心结构体均只携带密文不携带明文Commentcomment.goID、CollectionID相册 ID、FileID可为空表示相册级评论、ParentCommentID回复父评论可为空、UserID、AnonUserID匿名评论者、Cipher/Nonce加密载荷、IsDeleted软删除标记以及CreatedAt/UpdatedAtReactionreaction.go除作用域字段外CommentID用于标识对某条评论的点赞FileID用于标识对某文件的点赞AnonUseranon_user.goID与CollectionID绑定Cipher/Nonce加密存储显示名称印证了「匿名身份按相册隔离、不跨链接关联」的设计。数据库表与触发器server/migrations/114_comments_reactions.up.sql该迁移文件完整刻画了评论/点赞的存储设计三张表anon_users匿名用户身份、comments评论、reactions点赞。主键由 App 端提供 nanoid 字符串不依赖 pgcrypto评论的软删除与密文清空触发器tg_null_cipher_on_delete在删除时把cipher/nonce置为 NULL配合comments_cipher_on_delete检查约束保证「未删除必有密文、已删除必无密文」回复作用域校验触发器tg_check_reply_scope强制回复parent_comment_id必须指向同一collection_id与同一file_id的评论Reply must match parent scope与文档中「回复保持线程上下文」的体验对应点赞目标校验触发器tg_check_reaction_target保证对评论的点赞必须引用真实存在的评论且collection_id一致级联软删除tg_soft_delete_reactions_on_comment_delete在评论被删除时自动软删除其上的所有点赞每人每目标一个赞reactions表通过生成的actor_keyA:anon_user_id或U:user_id与unique_keyM:comment_id/F:collectionID/fileID/C:collectionID构成唯一约束uq_reactions_actor_target从数据库层面保证「每个用户对每张照片/每条评论只能有一个赞」多相册独立线程idx_comments_scope、idx_reactions_scope等索引均以(collection_id, file_id)为前缀支撑同一照片在不同相册拥有独立评论线程的查询。API 层server/pkg/api/social.go服务端为客户端提供增量同步与聚合查询接口UnifiedDiff通过sinceTime、commentsSinceTime、reactionsSinceTime与limit参数一次性拉取指定相册的评论与点赞增量分页字段hasMoreComments/hasMoreReactions这正是客户端实现「即时可见」的同步基础Counts与LatestUpdates为 Feed 提供「有动态的相册计数」与「最新更新」聚合对应文档中 Feed 实时更新的能力AnonProfiles按相册列出匿名用户档案加密显示名称用于在界面中展示匿名评论者/点赞者名称。客户端在界面层把这一整套能力呈现为心形按钮、评论面板、Feed 标签等交互服务端自始至终只负责搬运与存储密文。隐私与加密要点端到端加密所有评论文本与点赞数据都使用相册的加密密钥加密服务端不可读Ente 服务器只存储加密数据无法读取评论或点赞的明文服务端代码中Comment/Reaction结构只含Cipher/Nonce即为直接证据点赞填充Like padding点赞类型在加密前会被填充到固定大小以防范基于长度的分析由客户端在加密前执行服务端不感知明文结构匿名隐私匿名评论者的身份按相册加密存储anon_users表以collection_id为作用域并建有对应索引不会在不同公共链接之间关联。即使在有许多参与者的协作相册中你的评论也保持私密只有对该相册拥有合法访问权的人才能阅读。相关主题继续深入共享与协作能力可阅读仓库内以下文档路径已转换为仓库根目录相对路径协作相册Collaboration了解协作相册与权限体系公共链接Public Links创建可分享链接并可选开启评论分享概览Sharing Overview全部分享方式详解。此外若想进一步研究该功能的工程实现可依次查阅 server/ente/social领域模型、server/migrations/114_comments_reactions.up.sql表结构与约束以及 server/pkg/api/social.go同步与 Feed 聚合 API。【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表