如何将密钥集成到 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)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Python 3中enum包安装失败解析:标准库枚举模块的使用指南
上一篇 2026年5月10日 10:46:09
Golangchannel关闭与遍历使用技巧
下一篇 2026年5月10日 10:46:10

相关推荐

  • 解决 jQuery toggleClass 不响应问题的实用指南

    在网页开发中,toggleClass 是一个非常实用的 jQuery 方法,用于在元素的类名列表中添加或删除一个或多个类名。然而,开发者在使用过程中可能会遇到 toggleClass 不响应的问题,导致预期效果无法实现。本文将深入探讨这个问题,并提供解决方案。 理解 toggleClass 的基本用…

    2026年5月10日
    000
  • Avue按钮失效了,是什么原因导致的?

    avue按钮失效排查指南 图片: 问题: Avue框架中的按钮点击失效,无报错信息。 可能原因及解决方法: CSS样式冲突: 自定义CSS样式可能意外覆盖了Avue按钮的默认样式,导致按钮无法响应点击事件。 检查你的CSS代码,特别是:disabled和:hover伪类选择器,确保没有错误地覆盖Av…

    2026年5月10日
    000
  • CSS变量如何同时作为数字参与计算又作为字符串显示?

    css变量:数字与字符串的灵活运用及进度条案例 在CSS样式中,灵活运用数字和字符串变量(custom properties)至关重要。 例如,进度条需要同时使用数值进行角度计算,又需要将数值转换为字符串显示百分比。本文通过一个进度条案例,演示如何巧妙地解决CSS变量在数字和字符串之间转换的问题。 …

    2026年5月10日
    000
  • 如何在HTML元素悬停时显示动态数据提示

    本文详细介绍了如何在Angular等前端框架中,利用HTML的`title`属性为元素添加动态数据提示(tooltip)。通过将表达式(如`{{ row.boxes.length }}`)嵌入到`title`属性中,可以实现在用户鼠标悬停时,显示包含实时计算结果的文本提示,从而提升用户体验,并避免直…

    2026年5月10日
    000
  • 如何使用 CSS 选择器样式化表格的最后一行

    本文将介绍如何使用 CSS 选择器来样式化 HTML 表格的最后一行。通过使用 :last-child 或 :last-of-type 伪类,可以轻松地为表格的最后一行应用特定的样式,例如更改背景颜色或字体样式。 使用 :last-child 伪类 :last-child 伪类选择器用于选择父元素的…

    2026年5月10日
    000
  • JavaScript动态切换CSS类:确保事件触发与元素可见性

    本文将深入探讨如何利用javascript的`classlist` api实现html元素css类的动态切换,从而改变其样式和行为。我们将详细介绍`add`、`remove`等方法的应用,并通过一个实际案例,重点分析在事件驱动的类切换中,确保事件监听器能够被正确触发以及目标元素可见性的重要性,提供解…

    2026年5月10日
    000
  • 理解浏览器音频播放通知:JavaScript无法隐藏的原因

    本文深入探讨了在javascript中播放音频时,浏览器标签页上出现的播放通知图标(如音乐音符)。明确指出,这些通知是浏览器原生功能,旨在提升用户体验,帮助用户识别正在播放音频的标签页,因此无法通过javascript代码进行隐藏或控制。文章将解释其设计原理及对开发者的意义。 在现代Web开发中,通…

    2026年5月10日
    100
  • 如何查看本地html_本地HTML文件(浏览器/编辑器)打开与查看方法

    使用浏览器或代码编辑器可快速查看本地HTML文件。1. 拖拽文件到Chrome等浏览器窗口即可加载;2. 右键选择“打开方式”并指定浏览器;3. 通过浏览器菜单“文件→打开文件”浏览选择;4. 使用VS Code等编辑器打开并编辑,配合Live Server插件实现自动刷新;注意文件扩展名为.htm…

    2026年5月10日
    000
  • html和CSS给文字添加删除线的三种方法(图文)

    一年一度的双十一剁手节快到了,大家在逛淘宝时一定会关注商品的价格,你有没有注意到商品原价上面加了删除线,作为一个前端开发人员,你知道如何用css给文字加删除线吗?这篇文章给大家总结了添加删除线的三种方法,包括html中的删除线标签和css中的删除线样式,有一定的参考价值,感兴趣的朋友可以看看。 给文…

    2026年5月10日
    000
  • js怎么获取元素的样式值

    想获取元素的最终计算样式应使用window.getcomputedstyle(),因为它能返回元素所有来源样式的计算值;2. 若仅需读取或设置内联样式,可直接使用element.style;3. getcomputedstyle返回的是浏览器渲染后的绝对值,如相对单位会转为px,颜色转为rgb格式;…

    2026年5月10日
    000
  • 如何使用HTML和CSS创建定价表?

    我们可以只使用HTML和CSS来创建一个基本的定价表。定价表可以是在涉及商品购买的不同网站中实现的一个有用的功能,例如电子商务网站应用程序或旅行网站。让我们通过下面的示例来学习如何创建这样的表格 – 示例 我们将首先在以下index.html文件中创建一个HTML表格的布局,然后再添加样…

    2026年5月10日
    100
  • css自适应怎么设置高度

    可以通过使用 CSS 属性设置自适应高度,包括 min-height(设置最小高度)、max-height(设置最大高度)、flex(允许元素在空间内展开)和 calc(动态计算高度),根据具体效果选择合适的方法。 CSS 自适应高度设置 问题:如何使用 CSS 设置自适应高度? 回答:可以通过使用…

    2026年5月10日
    000
  • Golang开发小型任务管理后台项目

    答案是使用Golang标准库搭建任务管理后台,通过内存或SQLite存储任务数据,实现增删改查与状态更新功能,结合HTML模板与静态资源完成前后端交互,适合学习Web服务全流程。 用Golang开发一个小型任务管理后台是个不错的练手项目,既能掌握Go的基础语法,也能理解Web服务的完整流程。下面是一…

    2026年5月10日
    000
  • JS如何实现响应式设计

    js实现响应式设计的核心是监听屏幕变化并执行相应逻辑,主要通过window.matchmedia()、监听resize事件、第三方库、设备类型检测和mutationobserver等方式实现;2. 推荐使用window.matchmedia(),因其与css media queries同步、性能好且…

    2026年5月10日
    000
  • 基于滚动位置的HTML元素样式动态控制与边界限制

    基于滚动位置的HTML元素样式动态控制与边界限制基于滚动位置的HTML元素样式动态控制与边界限制基于滚动位置的HTML元素样式动态控制与边界限制基于滚动位置的HTML元素样式动态控制与边界限制

    本教程深入探讨如何利用JavaScript的window.scrollY事件,在页面滚动时动态调整HTML元素的样式,例如字体大小和外边距。文章重点介绍通过引入条件判断,为样式属性设置明确的上下限,从而有效避免无限制的样式变化,确保元素在滚动过程中呈现出平滑且受控的视觉效果。 1. 引言:滚动事件与…

    2026年5月10日 用户投稿
    000
  • 如何在HTML中插入社交分享按钮_HTML第三方分享SDK集成方法

    答案:集成第三方SDK可实现网页社交分享。选用微信JS-SDK、微博Web SDK等或聚合工具,引入脚本并初始化,配置权限与分享内容,自定义按钮样式及事件,注意HTTPS、签名缓存与移动端适配,确保分享功能稳定流畅。 在网页中添加社交分享功能,能有效提升内容传播性。通过集成第三方社交平台的分享SDK…

    2026年5月10日
    200
  • 如何使用Brackets处理HTML动画代码的详细步骤

    使用Brackets编写HTML动画需先安装配置编辑器并启用实时预览,接着创建含CSS样式和JS脚本的HTML文件,通过内联样式或外部文件定义动画效果,利用@keyframes和transition实现悬停旋转放大及闪烁动画,结合JavaScript添加点击事件控制动态变换,借助Emmet、代码折叠…

    2026年5月10日
    100
  • DOM操作的基本方法有哪些

    dom操作的核心是通过javascript控制网页元素,主要步骤包括:1. 选择元素,常用方法有getelementbyid、getelementsbyclassname、getelementsbytagname、queryselector和queryselectorall,其中queryselec…

    2026年5月10日
    000
  • CSS动画中如何用简写方法让旋转角度随百分比进度变化?

    css动画中简写旋转角度百分比 在css动画中,您希望自定义属性–rotate-angle的值随着百分比进度而增加。尽管可以使用逐个百分比值的方法,但还有一种简写方法。 为了简化编写,可以将自定义属性定义为角度属性。 @property –rotate-angle { syntax: …

    2026年5月10日
    000
  • 从数据库表生成图片轮播的教程

    本文旨在指导开发者如何从数据库表中动态生成图片轮播效果。通过PHP连接数据库,检索图片数据,并利用循环结构生成HTML代码,最终实现一个可展示大量图片的轮播组件。本文将提供详细的代码示例和解释,帮助读者理解并掌握该技术的实现方法。 从数据库动态生成图片轮播 动态生成图片轮播的关键在于从数据库中读取图…

    2026年5月10日
    100

发表回复

登录后才能评论
关注微信