Easy SaaS Next

登录系统

在 Easy SaaS Next 中使用 better-auth 快速实现登录系统

Easy SaaS Next 使用 better-auth 作为登录系统。

使用 better-auth 需要数据库支持。所以在使用前需要先配置数据库。

配置

所有的配置文件都位于 src/lib 文件夹中。

auth-client.ts
auth.ts

为了方便快速开发,Easy SaaS Next 中默认使用了 Google 和 Github 作为登录方式。

这样做的好处是用户无需验证邮箱(使用邮箱登录通常需要发送邮件来验证邮箱真实性),只需要申请 Google 和 Github 的 OAuth 就可以快速接入登录系统。

配置 Google OAuth

  1. 登录 Google Cloud Console
  2. 前往 OAuth 客户端 ID 创建 OAuth 客户端 ID
  3. 配置 JavaScript 来源http://localhost:3000https://您的域名
  4. 配置 重定向 URIhttp://localhost:3000/api/auth/callback/googlehttps://您的域名/api/auth/callback/google
  5. clientIdclientSecret 配置到环境变量中
.env
# google client id
GOOGLE_CLIENT_ID=
# google client secret
GOOGLE_CLIENT_SECRET=

配置 Github OAuth

  1. 登录 Github
  2. 前往 OAuth 应用 创建 OAuth 应用
  3. 配置 Homepage URLhttp://localhost:3000https://您的域名
  4. 配置 Authorization callback URLhttp://localhost:3000/api/auth/callback/githubhttps://您的域名/api/auth/callback/github
  5. clientIdclientSecret 配置到环境变量中
.env
# github client id
GITHUB_CLIENT_ID=
# github client secret
GITHUB_CLIENT_SECRET=

插件

Easy SaaS Next 中使用插件来增强 better-auth 的功能。

管理员插件

admin 插件是 better-auth 的插件之一,用于管理员管理用户,或者保护路由。

你只需要在数据库中,找到 user 表,将您的账户中 role 字段设置为 admin 即可。

更多详情请查看 better-auth admin 插件文档

使用

客户端中使用

import { useUser } from '@/components/user-provider'

const { data: session, isPending, error } = useUser()

服务端中使用

import { headers } from 'next/headers'

import { auth } from '@/lib/auth'

const session = await auth.api.getSession({
  headers: await headers(),
})