如何将密钥集成到 SvelteKit 中

如何将密钥集成到 sveltekit 中

在本教程中,我们将引导您构建一个包含密钥身份验证的示例 sveltekit 应用程序。我们将向您展示如何无缝集成 corbado 的密钥 ui 组件以实现安全、无密码的身份验证。在此过程中,我们还将演示如何使用 corbado node.js sdk 在服务器上检索用户数据。

在这里查看完整的原始教程

先决条件

在我们深入之前,您应该熟悉 svelte、javascript、html 和 css。此外,您需要在开发计算机上安装 node.js 和 npm。

带有密钥的 sveltekit 项目结构

我们将从设置基本的 sveltekit 项目结构开始。复制代码

.├── .env├── package.json└── src    ├── app.html    └── routes        ├── +layout.svelte        ├── +layout.server.ts        ├── +page.svelte        └── profile            ├── +page.server.ts            └── +page.svelte

这是我们将要使用的基本布局。出于本教程的目的,可以忽略大多数其他文件。

设置 sveltekit 项目

首先,使用以下命令初始化一个新的 svelte 项目:

npm create svelte@latest example-passkeys-sveltecd example-passkeys-sveltenpm install

在设置过程中,您可以选择以下选项:

应用程序模板: 骨架项目类型检查:我们正在使用 typescript,但请根据您的喜好随意选择。其他选项:我们建议使用 eslint 和 prettier 来提高代码质量和格式。

接下来,安装corbado的web-js和node-sdk包:

npm i @corbado/web-js @corbado/node-sdknpm i -d @corbado/types

在本地运行项目以验证设置:

npm run dev

默认的 svelte 骨架应用程序应该可以在 http://localhost:5173 上找到。

使用 corbado 添加密钥

第 1 步:设置您的 corbado 帐户和项目

在 corbado 开发者面板上注册并创建一个新项目。为产品选择“corbado complete”,并指定“svelte”作为框架。定义您的应用程序 url 并将依赖方 id 设置为 localhost。之后,检索您的项目 id 和 api 密钥,您需要将其存储在环境变量中。

将它们添加到项目中的 .env 文件中:

public_corbado_project_id=your-corbado-project-idcorbado_api_secret=your-corbado-api-secret

第 2 步:嵌入 passkey ui 组件

首先,禁用服务器端渲染(ssr),因为 corbado 的 web-js 包当前不支持它。创建一个包含以下内容的 +layout.server.ts 文件:

export const ssr = false;

然后,通过在外部布局组件中初始化 corbado 密钥 ui 组件来将其嵌入到前端中。这确保了应用程序的其余部分仅在 corbado 初始化后才会呈现。

  import corbado from "@corbado/web-js";  import { onmount } from "svelte";  import { public_corbado_project_id } from '$env/static/public';let isinitialized = false;  onmount(async () => {    await corbado.load({      projectid: public_corbado_project_id,      darkmode: 'off',      setshortsessioncookie: true,    });    isinitialized = true;  });
{#if isinitialized} {/if}

第三步:修改主页

在 src/routes/+page.svelte 中,集成注册和登录 ui 组件。通过身份验证后,将用户重定向到 /profile 页面。

  import corbado from '@corbado/web-js';  import { onmount } from 'svelte';let authelement;  onmount(() => {    corbado.mountauthui(authelement, {      onloggedin: () => window.location.href = "/profile",    });  });

第 4 步:设置个人资料页面

在 /profile 路径下创建一个个人资料页面,您将在其中使用 corbado 的 node sdk 检索和显示用户信息。

在+page.server.ts中,检索会话cookie并返回用户数据:

import { sdk, config } from '@corbado/node-sdk';import { public_corbado_project_id } from '$env/static/public';import { corbado_api_secret } from '$env/static/private';const config = new config(public_corbado_project_id, corbado_api_secret);const sdk = new sdk(config);export async function load({ request }) {  const cookies = parsecookies(request.headers.get('cookie') || '');  const cbo_short_session = cookies.cbo_short_session;  if (!cbo_short_session) return { user: undefined };  try {    const user = await sdk.sessions().getcurrentuser(cbo_short_session);    if (!user.isauthenticated()) return { user: undefined };    return { user: { email: user.getemail(), userid: user.getid() } };  } catch {    return { user: undefined };  }}function parsecookies(cookieheader) {  return object.fromentries(    cookieheader.split(';').map(cookie => {      const [name, ...rest] = cookie.trim().split('=');      return [name, rest.join('=')];    })  );}

相应的页面将访问我们的加载程序的数据并显示用户的名称和用户 id,并提供一个注销按钮。如果用户未登录,我们将显示返回主页的链接。

    import type { pagedata } from './$types';    import corbado from '@corbado/web-js';    import { goto } from '$app/navigation';    export let data: pagedata    async function handlelogout() {        await corbado.logout()        await goto("/")    }
{#if (data.user)}

profile page

user-id: {data.user.userid}

name: {data.user.email}

{:else}

you aren't logged in.

go home

{/if}

运行应用程序

一切设置完毕后,运行您的应用程序:

npm run dev

您的带有密钥身份验证的 sveltekit 应用程序现已上线。登录后,用户将被重定向到显示其 id 和电子邮件的个人资料页面。

结论

在本指南中,我们展示了如何将 corbado 的密钥身份验证集成到 sveltekit 应用程序中。这种方法使用 corbado 易于实现的 ui 组件提供安全、无密码的体验。您现在可以对此进行扩展并探索更高级的功能,例如会话管理或多设备支持。

以上就是如何将密钥集成到 SvelteKit 中的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1491360.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 13:54:00
下一篇 2025年12月19日 04:56:50

相关推荐

  • 释放 WordPress 的力量:构建令人惊叹的网站的指南

    在快速发展的 Web 开发世界中,WordPress 仍然是一次又一次重复使用的珍贵核心,用于将网站的各种性质构建为强大而灵活的解决方案,从而构建易于管理的出色网站。无论是强大的开发人员、企业主还是数字空间 WordPress 的新手。这个博客将帮助您完成整个过程,从了解功能和性能到设置您的网站和 …

    2025年12月19日
    000
  • 如何使用 Tailwind CSS 和 JavaScript 创建基本绘图工具并保存为 PNG

    今天,我们将使用 Tailwind CSS 和 JavaScript 创建一个简单的绘图工具。我们将使用 canvas 元素进行绘图,并使用 toDataURL 方法将图像保存为 PNG。 绘图工具是一款数字应用程序,可让用户创建和编辑视觉内容。它通常提供一个画布,用于使用画笔或钢笔等工具徒手绘画,…

    2025年12月19日
    000
  • 使用 Remotion、Nextjs 和 Tailwind CSS 构建基于 Web 的视频编辑器

    如果您曾经想创建自己的强大的基于网络的视频编辑器(类似于 veed.io 或 descript 等流行工具),那么您来对地方了!在本分步指南中,我们将向您展示如何使用 remotion、next.js 和 tailwind css 构建视频编辑器。最后,您将为开发自己的基于浏览器的视频编辑工具奠定坚…

    2025年12月19日
    000
  • Tom and Jerry Light code

    Hut Light Effect /* Internal CSS */ body { margin: 0; display: flex; justify-content: center; align-items: center; height: 100vh; background: #333; } …

    2025年12月19日
    000
  • 通过正确的 标签放置优化页面性能

    <img src="https://img.php.cn/upload/article/000/465/014/172584203024406.jpg" alt="通过正确的 标签放置优化页面性能”> 标签放置优化页面性能” /&gt…

    2025年12月19日
    000
  • 免费接龙

    很久以前,在同一个星系中,我开始尝试制作 freecell,作为学习 angular 1.3 的一种方式。 我已经走了这么远,然后我就被其他事情分散了注意力,就像副项目一样。 我最近有一些空闲时间(我知道,我也没想到),所以我想我应该再试一次。 我基本上是从头开始,因为我对 angular 1.3 …

    好文分享 2025年12月19日
    000
  • 使用 React 构建笑话生成器

    介绍 在本教程中,我们将指导您使用 react 构建一个简单而有趣的笑话生成器。这个项目非常适合想要练习在 react 中处理 api 请求并管理功能组件中的状态的初学者。 项目概况 这个笑话生成器从 api 中获取随机笑话,并在用户单击按钮时将其显示在屏幕上。它具有干净简约的用户界面,使其易于交互…

    2025年12月19日 好文分享
    000
  • 星球大战主题太阳系指南 – 魅力我的标记:

    这是前端挑战 v24.09.04 的提交,Glam Up My Markup: Space 我建造了什么 探索太阳系:受星球大战启发的银河之旅 想象一下,偶然发现一本来自遥远星系的传奇旅游手册——一本关于被称为太阳系的神秘恒星系统的指南。本着星球大战宇宙的精神,这个项目将我们自己的天体社区变成了冒险…

    2025年12月19日
    000
  • 使用 React 构建密码验证器

    介绍 在本教程中,我们将指导您使用 react 构建一个简单有效的密码验证器。这个项目非常适合想要在 react 中练习表单验证和处理用户输入的初学者。 项目概况 密码验证器实时检查用户密码的强度,并提供有关密码是否符合强密码标准的反馈。反馈显示在输入字段下方,鼓励用户创建更安全的密码。 特征 实时…

    2025年12月19日
    000
  • 完整的 Redux 工具包(第 1 部分)

    redux 工具包的用途 我们已经知道 redux 是 javascript 应用程序的一个强大的状态管理库,特别是在使用 react 时。但是使用 redux 很困难,因为它设置 redux 的代码很繁重。这使得维护和调试变得困难。这就是 redux toolkit 可以提供帮助的地方。 redu…

    2025年12月19日
    000
  • 用一个简单的属性来加速你的 CSS

    您知道吗,您可以通过使用 all: unset; 来大幅减小 css 文件大小?这会重置元素上的所有属性,一次性清除所有继承的样式,使您的 css 更精简且更易于管理。 尝试一下,看看你的代码变得多么干净!如何管理继承的样式? 以上就是用一个简单的属性来加速你的 CSS的详细内容,更多请关注创想鸟其…

    2025年12月19日
    000
  • 编写您的第一个 Web 组件(学习 Modulojs – 第 f 部分

    ? 欢迎所有新订阅者和返回的组件编码者!我即将开始一个新的 10 部分教程系列。虽然我的其他教程使用 modulo.js 构建特定的、有趣的小应用程序,例如口袋妖怪舞会、复古挤压文本编辑器或视频游戏画廊,但本教程系列将建立在基本原则上,从第一部分开始:什么是 web 组件吗? html 和 css …

    2025年12月19日
    000
  • 如何使用 Tailwind CSS 和 JavaScript 创建图像比较滑块

    好奇如何以流畅且交互式的方式显示“之前和之后”图像?今天,我们将仅使用 JavaScript 和 Tailwind CSS 创建一个出色的图像比较滑块。 这个方便的工具非常适合展示更改 – 无论是调整照片、更新产品还是并排比较两个图像。它易于构建,并可为任何项目增添专业气息。让我们深入研…

    2025年12月19日
    000
  • 前端尝试

    这是前端挑战 v24.09.04 的提交内容,美化我的标记:space 我建造了什么 我构建了一个以太空为主题的登陆页面,提供有关太空探索的信息。目标是创造一个有吸引力的简约设计,突出太空历史、当前任务、未来任务等的关键方面。该页面包括主页、关于、历史、当前任务、未来任务、调查问卷和联系信息等部分。…

    2025年12月19日 好文分享
    000
  • 教程:如何将密钥集成到 Nuxtjs 中

    介绍 在本教程中,我们将指导您完成将密钥身份验证集成到 nuxt.js 应用程序中的过程。我们将涵盖从设置 nuxt.js 项目到实现 corbado ui 组件以实现无缝密钥登录体验的所有内容。 如果您想直接跳到代码中,可以在我们的 github 存储库中找到完整的示例。 在此处阅读完整的博客文章…

    2025年12月19日
    000
  • 利用 JavaScript 的集合和映射实现高效的内容管理系统

    javascript 提供了几种强大的数据结构来处理数据集合。其中,map 和 set 对于某些类型的任务特别有用。在本博客中,我们将探讨使用 map 和 set 解决常见编程问题的现实示例。 理解地图和集合在深入示例之前,让我们快速回顾一下 javascript 中的 map 和 set 是什么。…

    2025年12月19日
    000
  • 在当今时代使用 Nextjs:现代 Web 开发框架

    在当今快速发展的数字环境中,Web 开发变得比以往更加复杂和动态。开发人员不断寻找能够简化工作流程、提高性能和增强用户体验的工具。在各种可用的框架中,Next.js 已成为开发人员的最佳选择,因其易用性、灵活性和强大的功能而广受欢迎。 Next.js 构建于 React 之上,通过提供用于构建现代 …

    2025年12月19日
    000
  • 优化 Web 性能:最佳实践和技术

    简介说明:加载缓慢的网站和加载快速的网站之间的比较,突出显示对用户参与度的影响。 在当今快节奏的数字环境中,网络性能是直接影响用户体验、参与度和转化率的关键因素。加载缓慢的网站可能会导致更高的跳出率、更低的用户满意度,并最终导致收入损失。另一方面,经过良好优化的网站可以增强用户体验、提高搜索引擎排名…

    2025年12月19日 好文分享
    000
  • 使用 Nextjs Prisma、TailwindCSS 和 Next Auth 进行旅行预订

    旅行预订应用程序 使用 next.js 14、tailwind css、typescript 和 prisma 进行中的旅行应用程序。允许用户注册、游览浏览、预订和评论提交。对开发过程中的所有贡献开放。 入门 克隆存储库:git clone https://github.com/saidmounai…

    2025年12月19日
    000
  • 了解如何在

    模数教程回来了! 大家好!暑假结束后,我带着 modulo 教程回来了。我正在制作更多教程 – 请继续关注。也就是说,如果您对我的下一个主题有任何特别的想法,请务必在评论中告诉我! 我的上一篇教程是关于 api 驱动的 pokémon dance party 组件的超级快速且有趣的“仅 …

    2025年12月19日 好文分享
    000

发表回复

登录后才能评论
关注微信