认证
Auth 指的是身份验证和授权,这是构建 Web 应用程序时常见的需求。身份验证是指根据用户提供的凭据验证用户身份。授权是指确定用户允许执行哪些操作。
会话与令牌
在用户提供用户名和密码等凭据后,我们希望允许他们使用应用程序,而无需在以后的请求中再次提供凭据。用户通常使用会话标识符或签名令牌(如 JSON Web Token (JWT))在后续请求中进行身份验证。
会话 ID 最常存储在数据库中。它们可以立即撤销,但需要在每次请求时进行数据库查询。
相比之下,JWT 通常不会针对数据存储进行检查,这意味着它们无法立即撤销。这种方法的优点是提高了延迟并减少了数据存储的负载。
集成点
可以在 服务器端钩子 中检查 Auth cookie。如果找到与提供的凭据匹配的用户,则用户信息可以存储在 locals
中。
指南
Lucia 是基于会话的 Web 应用认证的参考。它包含用于在 SvelteKit 和其他 JS 项目中实现基于会话的身份验证的示例代码片段和项目。在创建新项目时,可以使用 npx sv create
,或在现有项目中使用 npx sv add lucia
将遵循 Lucia 指南的代码添加到项目中。
身份验证系统与 Web 框架紧密耦合,因为大部分代码都用于验证用户输入、处理错误以及将用户引导到相应的下一页。因此,许多通用的 JS 认证库都包含一个或多个 Web 框架。出于这个原因,许多用户会发现遵循 SvelteKit 特定的指南(例如 Lucia 中的示例)比在项目中包含多个 Web 框架更可取。