Nuxt Hanko
特性
- ✨ 轻松集成 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',
// 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 组件。 Props 是类型化的。
你可以关闭组件的自动注册(如果你希望仅在服务器端或以编程方式使用 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
的底层实用工具,如果你想手动处理事情。
💻 开发
- 克隆此仓库
- 使用
corepack enable
启用 Corepack - 使用
pnpm install
安装依赖项 - 使用
pnpm dev:prepare
桩模块 - 运行
pnpm dev
以在开发模式下启动 playground
鸣谢
感谢 @McPizza0 推动制作了这个模块!
许可证
用 ❤️ 制作
在 MIT 许可证下发布。