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

hanko
@nuxtjs/hanko

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

Nuxt Hanko

npm versionnpm downloadsGithub ActionsCodecov

Hanko 針對 Nuxt 的整合

功能

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

安裝

安裝並將 @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'
    // redirects: {
    //   login: '/login',
    //   success: '/',
    //   home: '/',
    //   followRedirect: true
    // },
    // registerComponents: true,
    // augmentContext: true,
  },
})

用法

元件

要使用,您可以在應用程式中的任何位置使用 Hanko 元件:<hanko-auth><hanko-events><hanko-profile>。這些是在用戶端才會渲染的 Web 元件。屬性已設定型別。

您可以關閉元件的自動註冊(如果您只想在伺服器端或以程式設計方式使用 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 的基礎工具,如果您想要手動處理的話。

💻 開發

  • 複製此儲存庫
  • 使用 corepack enable 啟用 Corepack
  • 使用 pnpm install 安裝相依性
  • 使用 pnpm dev:prepare 存根模組
  • 執行 pnpm dev 以在開發模式下啟動 playground

鳴謝

感謝 @McPizza0 推動此模組的開發!

授權

以 ❤️ 製作

MIT 授權 發布。