亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

少年開發者皮克羅威:打造9.5K星標認證神器 Lucia 的背后故事 ????

我们回来了,继续我们的系列文章,在这些文章中我们将采访开源维护者并展示他们不断推动的令人惊叹的开源项目。本周,我们与Pilcrow进行了交谈,这位来自日本的令人鼓舞的年轻开发者因开发认证库Lucia和对认证与安全的热爱而闻名。

Lucia 是我们在 Wasp,一个类似于 Laravel 的 React & Node.js 框架 中使用的开源工具之一。自 2023 年 10 月以来,它在 GitHub 上获得了 9.5K 的 star。虽然 Lucia 本身将在 2025 年停止作为库使用,并转变为一个 学习材料,但 Pilcrow 正在开发其他与身份验证相关的项目,例如 Copenhagen 和 Oslo。您可以在他的 博客 上了解更多关于他的工作和其他项目的信息。

希望这次访谈能够,激励你为开源社区贡献自己的力量,那我们开始吧!

  • 你能简单介绍一下你自己,以及你是怎么开始编程的吗?是什么让你对认证以及开发者工具感兴趣?

我是 Pilcrow,我现在在日本上大学,正在参与各种与认证和安全相关的开源项目。我大概四年前开始接触编程,所以现在我在这个领域还是个新手。我特别喜欢设计 API,这大概是我喜欢开发库工作的主要原因。

  • 露西娅帮你赢得了开发者的认可。是什么激发了你去创建它,你又是怎样决定投入这么多的时间和精力?

我被要求为学校的活动搭建几个网站,其中我最头疼的部分是身份验证。一半是因为经验不足,另一半是因为我发现像 Firebase 这样的第三方服务也难以理解。当时他们的大部分功能和 API 都是针对单页应用(SPA)设计的,并不适合服务端渲染的应用。开源的选择也不尽如人意。直到今天,我仍然不太知道如何真正使用 NextAuth(现在是 Auth.js)或 Passport.js。

暑假期间,我决定为 SvelteKit 构建一个更精简的 NextAuth 版本,以便在 SvelteKit 项目中使用。这是我第一次开发开源库,它在 Svelte 社区里也受到了一些关注。后来,我将它改造成一个框架无关的版本,它自然地成长了。

做库开发让我上瘾,尤其是设计API和写文档都很有趣。

来 GitHub 上支持 Wasp 吧!(Wasp)🙏⭐️

如果你觉得这篇帖子对你有帮助,请在Github上给我们点个星(⭐)! Wasp上的所有项目都是开源的,你的支持能帮助我们使网页开发更简单,也能激励我们继续创作更多这样的内容。

⭐️ 感谢你对我们的支持 🙏

  • 管理像 Lucia 这样的开源项目肯定会有不少挑战。遇到了哪些意想不到的困难,你是怎么应对的?

说实话,我觉得维护开源项目其实没什么特别难的。这主要花了很多时间在Discord上回答问题和撰写文档。从我刚开始接触开源项目以来,我的开发方法确实有所改变。现在我更侧重于设计API和编写文档上,而不是新增功能。

  • 你也在做The Copenhagen Book的编写,这本书主要介绍认证指南。为什么认证领域特别吸引你?

我喜欢琢磨为什么某些东西是脆弱的,而某些不是,这对我来说是一个有趣的谜题。我也喜欢可以深入各种不同的技术细节。你可能正在搜索某个协议,下一刻就开始阅读关于某个晦涩编码格式的50页RFC文档。这是一个不断让你学习新知识的领域。

更棒的是,不用管CSS。

  • 奥斯陆提供了些与认证相关的实用工具。你能介绍一下它的主要功能和它解决的问题吗?

Oslo是一系列用于各种认证相关和加密操作的包集合。Base64、WebAuthn、SHA-256、ECDSA、TOTP/HOTP、ASN.1等。它不依赖于第三方依赖或运行时特定的API,因此极其精简,可以在任何环境中运行。与其他类似的库相比,其API级别相对较低。它需要一些对底层标准的知识,但你无需学习特定于该库的概念,这在我看来是一个很大的优势。

另外,这个功能非常简单,但有一些文档非常加分。

  • 你怎么在多个开源项目之间分配你的时间,并确保每个项目都能得到应有的重视?

如果能有更好的系统就好了,但我只是随性地工作。我不太擅长同时做几件事,更喜欢一次只专注一件事。而且收到的 bug 报告也不多,所以对我来说这样也还行。

  • 你是如何在不同的项目中跟上不断变化的安全标准的?对于那些从零开始构建自己认证系统的团队,你会给什么建议?

说实话,我觉得网页应用的安全性并没有发展得那么快。至少与JavaScript生态系统相比(相比之下),任何东西都不如它发展得快。威胁模型和基本建议一直保持不变。一个加密算法不会一夜之间被破解,而且威胁模型和基本建议与十年前相比并没有太大变化。许多漏洞依旧是因为访问控制不足和输入验证不到位。

但主要是多读一些。理解你正在使用的框架和协议。RFCs 和相关文档已经提到了很多可能的陷阱。这同样适用于那些打算将认证委托给第三方的人,至少在某种程度上是这样。

  • 维护开源项目的人员经常面临工作倦怠感。你是怎么保持动力的?是什么让你不断回到这些项目?

维持多个项目确实有助于防止倦怠。我的项目规模不大,也不是特别复杂,实际遇到的 bug 报告也不多,所以我并不担心换到另一个项目,或者休息一周左右或者两周。

我也把开源当成一种爱好。我会尽快解决 bug,但我不会急着添加新功能。

GIF

  • 在参与开源项目时,我们是怎样处理社区成员的贡献并让其他开发者有意义地参与的?

我觉得我的项目并不是特别好的开源合作例子。我通常会请人们为新功能打开GitHub问题,除了修复bug和拼写错误外,我一般不接受其他pull请求。我喜欢花时间试验各种API设计,我个人觉得,初期设计阶段由我一个人完成更容易些。我也有一些自己偏好的代码风格,我真的希望保持我的代码“漂亮”(是的,我知道这听起来可能有点傻)。

说实话,我通常不太喜欢 pull requests,因为如果我拒绝了,我觉得浪费了贡献者的时间,哪怕代码确实很糟糕。

我非常清楚这种封闭的方式在较大的项目中行不通,但对我来说,做开源只是个爱好,所以我觉得我可以在其中享受一些乐趣。

社区方面大部分都来自Discord,真的很感谢那些每天在Discord里活跃并回答问题的人。说实话,这可能是我收到的最有价值的帮助。

  • 知道现在对开源和开发者工具了解这么多的情况下,你会如何改变项目的开发和管理方式。

尽早定义项目的范围和目标。我不怪自己在刚开始 Lucia 时没有多做考虑,毕竟那确实是我的第一个开源库,但这样确实让后续主要版本的开发变得更加艰难。项目能添加的功能毕竟有限,否则代码就会变得混乱。你不可能取悦所有人,所以选择一个方向并成为那个领域的最佳。

我也认为,那些在使用方式和位置上更灵活的库,而不是行为多变的库,会更易于预测和使用。明确划分库和用户的责任边界,这样的划分会让使用更加愉快。

  • 你最喜欢吃哪种拉面呢?

可能是豚骨拉面,特别是来自九州(日本四个主要岛屿中第三大的岛屿)。汤底用猪骨熬制,因此变得浓郁顺滑,面条很有嚼劲(就像 al dente 意大利面一样)。

希望你喜欢这次采访哦!如果你下次想采访谁有任何建议,加入我们的 Discord 频道,和我们说说你的想法吧!

最初发布于https://wasp-lang.dev于2024年10月24日。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消