SuperAPI AI 工具集

nuxt-auth

安全与审计

查看项目

更新于 10-16 09:21

技能介绍

用途

nuxt-auth 用于在 Nuxt 应用中实现认证与授权,后端认证方案为 Laravel Sanctum,授权方式为基于权限的访问控制。它适合需要登录/登出、保护页面、按权限显示或隐藏操作入口的前后端分离项目。

主要能力

  • Laravel Sanctum 认证集成:通过 nuxt-auth-sanctum 模块接入后端认证接口。
  • 认证状态管理:提供 useSanctumAuth 组合式函数,暴露 user、isAuthenticated、login、logout、init。
  • 权限判断:提供 usePermissions 组合式函数,暴露 can 与 cannot,用于单条权限判断。
  • 页面保护:通过 definePageMeta 声明页面所需权限。
  • 模板级控制:可在模板中结合 can 判断条件渲染按钮等元素。

使用方式

模块配置

在 nuxt.config.ts 中注册模块并配置 Sanctum:

// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['nuxt-auth-sanctum'],

  sanctum: {
    baseUrl: process.env.NUXT_PUBLIC_API_URL,
    endpoints: {
      login: '/auth/login',
      user: '/auth/user',
      csrf: '/sanctum/csrf-cookie',
      logout: '/auth/logout',
    },
    redirect: {
      onAuthOnly: '/auth/login',
      onGuestOnly: '/',
    },
  },
})

认证组合式函数

const { user, isAuthenticated, login, logout, init } = useSanctumAuth()

// Login
await login({ email, password })

// Logout
await logout()

// Check auth
if (isAuthenticated.value) { /* ... */ }

权限检查

const { can, cannot } = usePermissions()

// Single permission
if (can('leads.create')) { /* ... */ }

在模板中使用:

<UButton v-if="can('leads.create')" @click="createLead">Create</UButton>

页面保护

definePageMeta({
  permissions: 'leads.list',
})

适用场景

  • Nuxt 前端对接 Laravel Sanctum 后端,需要统一处理登录、登出与用户信息获取。
  • 需要按权限控制页面访问,例如仅允许具备 leads.list 权限的用户进入列表页。
  • 需要按权限控制界面元素,例如仅对具备 leads.create 权限的用户显示创建按钮。

限制

资料中未提供关于收费、价格、支持平台、性能效果或完整安装命令的说明,这些内容暂未提供。