Nuxt Hanko
功能
- ✨ 輕鬆整合 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-in
和 hanko-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 許可證 發布。