登录系统
在 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
- 登录 Google Cloud Console
- 前往 OAuth 客户端 ID 创建 OAuth 客户端 ID
- 配置
JavaScript 来源为http://localhost:3000或https://您的域名 - 配置
重定向 URI为http://localhost:3000/api/auth/callback/google或https://您的域名/api/auth/callback/google - 将
clientId和clientSecret配置到环境变量中
# google client id
GOOGLE_CLIENT_ID=
# google client secret
GOOGLE_CLIENT_SECRET=配置 Github OAuth
- 登录 Github
- 前往 OAuth 应用 创建 OAuth 应用
- 配置
Homepage URL为http://localhost:3000或https://您的域名 - 配置
Authorization callback URL为http://localhost:3000/api/auth/callback/github或https://您的域名/api/auth/callback/github - 将
clientId和clientSecret配置到环境变量中
# 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(),
})