透過 100 多個技巧的集合學習 Nuxt!

hanko
@nuxtjs/hanko

用於 Nuxt 的 Hanko 整合,實現無密碼身份驗證

Nuxt Hanko

npm versionnpm downloadsGithub ActionsCodecov

Hanko 整合適用於 Nuxt

功能

  • ✨ 輕鬆整合 Hanko
  • 🧱 Hanko web components 的類型安全和自動註冊
  • 💪 用於全端身份驗證的伺服器工具

安裝

安裝並將 @nuxtjs/hanko 新增至您的 nuxt.config

npx nuxi@latest module add hanko
export default defineNuxtConfig({
  modules: ['@nuxtjs/hanko'],
  hanko: {
    // You can also configure this by setting NUXT_PUBLIC_HANKO_API_URL at runtime
    apiURL: '<YOUR_API_URL>',
    // You can also customise these if required
    // cookieName: 'hanko',
    // cookieSameSite: 'Lax',
    // cookieDomain: 'nuxt.com',
    // storageKey: 'hanko',
    // redirects: {
    //   login: '/login',
    //   success: '/',
    //   home: '/',
    //   followRedirect: true
    // },
    // registerComponents: true,
    // augmentContext: true,
    // components: {
    //   shadow: true,
    //   injectStyles: true,
    //   enablePasskeys: true,
    //   hidePasskeyButtonOnLogin: true,
    //   translations: {},
    //   fallbackLanguage: 'en'
    // }
  },
})

用法

組件

要使用,您可以在應用程式中的任何位置使用 Hanko 組件:<hanko-auth><hanko-events><hanko-profile>。 這些是在客戶端呈現的 web components。 屬性已輸入類型。

您可以關閉組件的自動註冊(如果您希望僅在伺服器端或以程式方式使用 Hanko),使用 registerComponents: false

查看 Hanko 文件 以了解更多資訊。

<template>
  <hanko-auth />
</template>

中間件

預設情況下,您的 Nuxt 應用程式中有兩個新的路由中間件可用:hanko-logged-inhanko-logged-out

  • hanko-logged-in 將阻止訪問頁面,除非您已登入。(它將改為將您重新導向至 redirects.login,然後在您登入後重新導向回此頁面。 您可以透過將 redirects.followRedirect 設定為 false 來停用此行為。)
  • hanko-logged-out 將阻止訪問頁面,除非您已登出。(當您登入時,它將重新導向至 redirects.success,否則重新導向至 redirects.home。)

您也可以建立自己的中間件以進行完全控制。

自動導入

useHanko 在您應用程式的 Vue 部分中公開,讓您可以直接訪問 Hanko API。 您可以訪問目前使用者以及更多內容。 注意:它將在伺服器上返回 null

伺服器工具

預設情況下,您可以在 event.context.hanko 上訪問經過驗證的 JWT 上下文。(如果使用者未登入,它將為未定義。) 如果您想自行處理此問題,您可以設定 augmentContext: false

verifyHankoEvent 在您應用程式的 Nitro 部分中公開,以公開用於建立 event.context.hanko 的底層工具,如果您想手動處理事情。

💻 開發

  • Clone 這個儲存庫
  • 使用 corepack enable 啟用 Corepack
  • 使用 pnpm install 安裝依賴項
  • 使用 pnpm dev:prepare Stub 模組
  • 執行 pnpm dev 以在開發模式下啟動 playground

鳴謝

感謝 @McPizza0 推動模組的製作!

許可證

用 ❤️ 製作

根據 MIT 許可證 發布。